2014-01-15 2 views
0

У меня есть Kendo NumericTextBox. Когда какое-то определенное поле имеет некоторые определенные значения, диапазон значений для этого NumericTextBox будет только нечетными значениями.Приращение/Уменьшение только нечетных значений в Kendo Числовой текст на верхних/нижних прядильщиках/клавишах

Шаг настройки 2 будет работать, если текущее значение является нечетным значением.

Так что, если пользователь вводит какое-то значение, например 22, и нажимает на вертику, он должен увеличить значения до 23, а затем 25 при следующем нажатии.

Если текущее значение равно 30, и пользователь нажимает на ниппель, он должен уменьшить значение до 29, а затем 27 при следующем нажатии.

ответ

1

Вот решение для Вас: http://jsfiddle.net/a6Ek2/8/

var numericTextBox = $("#bar").kendoNumericTextBox({ 
    format: "d", 
    value: 1, 
    step: 2, }).data('kendoNumericTextBox'); 

numericTextBox.element.parent().find('.k-link').mousedown(function() { 
    var value = numericTextBox.value(); 
    if (value % 2 === 0) { 
     if ($(this).find('span.k-icon').hasClass('k-i-arrow-n')) { 
      numericTextBox.value(value - 1); 
     } 
     else { 
      numericTextBox.value(value + 1); 
     } 
    } }); 

Вы также можете заблокировать ввод данных с клавиатуры и установить шаг на 2:

$("#foo").kendoNumericTextBox({ 
    format: "d", 
    value: 1, 
    step: 2, 
}); 

$("#foo").attr('readonly', true); 
+0

Спасибо, он работает на вверх/вниз прядильщиках. как насчет нажатия клавиши? Хотелось бы, чтобы я обнаружил, что это вверх или вниз нажато/нажато на событие привязки. – rafoo

+1

Я боюсь, что событие catch keydown для numericTextBox - единственный способ сделать это. Kendo не обеспечивает последнее направление вращения в api. Я обновил jsFiddle для вас здесь: http://jsfiddle.net/a6Ek2/9/ –

0

Это немного сложно, но может работать. Вы должны играть с step, устанавливая его в 1 или 2 в зависимости от текущего значения текстового поля.

Затем вы меняете значение, когда щелкает щелчок или изменяется значение. Что-то вроде этого:

function adjustStep() { 
    var value = this.value(); 
    if (value % 2 == 1) { 
     number.options.step = 1; 
    } else {  
     number.options.step = 2; 
    } 
} 

var number = $("#numerictextbox").kendoNumericTextBox({ 
    step : 1, 
    value : 21, 
    spin: adjustStep, 
    change: adjustStep 
}).data("kendoNumericTextBox"); 

JSFiddle здесь: http://jsfiddle.net/kF2h7/1/

+0

Шаг настройки 2 будет работать после того, как значение в текстовом поле будет получено к нечетному значению, но не для четного значения. Кажется, нет простого способа определить, нажал ли пользователь на верхнем или нижнем счетчике или нажал клавишу вверх/вниз. – rafoo