具有步进和舍入的Kendo NumericTextBox

时间:2018-03-26 14:12:40

标签: kendo-ui kendonumerictextbox

我想设置kendoNumericTextBox以允许用户输入任何整数并将步长设置为1000.但是当用户输入任何值并且使用微调器时,它应该更新为< strong>下一步的多步。

例如:
输入123,按下旋转,值为1000
输入1234,按下旋转,值为2000

是否有可能或唯一的方法是处理旋转事件并从那里修改值?

更新
好的,伙计们,thnx寻求帮助。

我现在有这个旋转处理程序,它似乎按预期工作。

            function onSpin(e) 
            {
              var currentvalue = kendo.parseInt(this.value());
              if (currentvalue > 0) 
              {
                this.value(Math.floor(currentvalue / this.step()) * this.step());
              }

              if (currentvalue < 0) 
              {
                this.value(Math.ceil(currentvalue / this.step()) * this.step());
              }
            }

2 个答案:

答案 0 :(得分:1)

正如你所说,通过听旋转事件可以实现:

$("#numerictextbox").kendoNumericTextBox({
    min: 0,
    spin: function(e) {
        var isUp = e.sender._key === 38, 
          isDown = e.sender._key === 40;

      var m = Math.trunc(this.value()/1000), 
          value = isUp ? m + 1 : m;

      this.value(value * 1000);
    }
});

我怀疑是否有开箱即用的东西,因为你的需求似乎有点不寻常。

答案 1 :(得分:1)

我在下面提供了一个dojo,为您提供了一个潜在的解决方案: https://dojo.telerik.com/UQohUjaP/2

我创建了一个可以处理旋转和更改值的函数,这样它就可以根据您设置的值向上/向下步进值。 1000

该功能相当简单,为简洁起见,我在这里取出了日志语句:

 function onChange() {
   var currentvalue = kendo.parseInt(this.value());
   if (currentvalue > 0) {
     currentvalue = Math.ceil(currentvalue / this.step()) * this.step();
   } else if (currentvalue < 0) {
     currentvalue = Math.floor(currentvalue / this.step()) * this.step();
   } else {
     currentvalue = 0;
   }
   this.value(currentvalue);

 }

不幸的是,似乎没有一种简单的方法来确定值是上升还是下降所以我基本上检查该值是否大于1或小于1然后计算{值{1}}或ceiling,然后将其踩到正确的方向。为了满足零,我们有一个特殊的条件,只是将值设置为0 floor