Kendo ui 在上/下微调器/键上的Kendo Numerictextbox中,仅递增/递减到奇数值

Kendo ui 在上/下微调器/键上的Kendo Numerictextbox中,仅递增/递减到奇数值,kendo-ui,kendonumerictextbox,Kendo Ui,Kendonumerictextbox,我有一个剑道数字文本框。当某个字段具有某些特定值时,该NumericTextBox的值范围将仅为奇数 如果当前值为奇数,则将步骤设置为2将起作用 所以,若用户输入一些值,比如22,然后单击向上微调器,它应该将值增加到23,然后在下一次单击时将值增加到25 若当前值为30,并且用户单击向下微调器,则应将该值降至29,然后在下次单击时降至27。这有点棘手,但可能会起作用。您应该根据数字文本字段的当前值将其设置为1或2 然后在单击微调器或更改值时更改该值。大概是这样的: function adjust

我有一个剑道数字文本框。当某个字段具有某些特定值时,该NumericTextBox的值范围将仅为奇数

如果当前值为奇数,则将步骤设置为2将起作用

所以,若用户输入一些值,比如22,然后单击向上微调器,它应该将值增加到23,然后在下一次单击时将值增加到25


若当前值为30,并且用户单击向下微调器,则应将该值降至29,然后在下次单击时降至27。

这有点棘手,但可能会起作用。您应该根据数字文本字段的当前值将其设置为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 here:

这里是您的解决方案:

您还可以阻止从键盘输入数据,并将步骤设置为2:

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

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

一旦textbox中的值变为奇数,设置步骤2将起作用,但对于偶数则不起作用。似乎没有简单的方法来检测用户是单击了上/下微调器还是按下了上/下键。谢谢,它可以在上/下微调器上工作。按键怎么样?我希望我能在bind事件上检测它是向上还是向下点击/按下。恐怕numericTextBox的catch keydown事件是唯一的方法。剑道在api中不提供最后的旋转方向。我在这里为您更新了JSFIDLE:
$("#foo").kendoNumericTextBox({
    format: "d",
    value: 1,
    step: 2,
});

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