0

我想设置 kendoNumericTextBox 以允许用户输入任何整数并将 step 设置为 1000。但是当用户输入任何值并使用 spinner时,它应该更新到step 的下一个倍数

例如:
输入 123,按升速,值为 1000
输入 1234,按升速,值为 2000

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

更新
好的,伙计们,谢谢帮助。

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

            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());
              }
            }
4

2 回答 2

1

正如您所说,可以通过收听 spin 事件:

$("#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);
    }
});

我怀疑有什么开箱即用的东西,因为您的需求似乎有些不寻常。

于 2018-03-26T16:32:25.533 回答
1

我在下面提供了一个道场,为您提供了一个潜在的解决方案: 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,然后计算ceilingfloor值的然后朝着正确的方向前进。为了迎合零,我们有一个特殊条件,它只是将值设置为 0assuming that is a valid value in your scenario

于 2018-03-26T22:15:38.333 回答