Javascript 如何在剑道UI numericTextBox中保留尾随零?

Javascript 如何在剑道UI numericTextBox中保留尾随零?,javascript,kendo-ui,Javascript,Kendo Ui,我正在尝试使用剑道UI构建一个数字输入小部件。我可以设置格式,这样当字段没有焦点时,尾随零不会被截断,但是当字段没有焦点时,尾随零会消失 我在上有一个示例,相关位如下所示: <div id="add-product" class="demo-section k-content"> <ul id="fieldlist"> <li> <label for="numeric">Input</label> &

我正在尝试使用剑道UI构建一个数字输入小部件。我可以设置格式,这样当字段没有焦点时,尾随零不会被截断,但是当字段没有焦点时,尾随零会消失

我在上有一个示例,相关位如下所示:

<div id="add-product" class="demo-section k-content">
  <ul id="fieldlist">
    <li>
      <label for="numeric">Input</label>
      <input id="numeric" type="number" value="17" min="0" max="100" step="1" style="width: 100%;" />
    </li>
  </ul>
</div>

<script>
  $(document).ready(function() {
    // create NumericTextBox from input HTML element
    $("#numeric").kendoNumericTextBox({
      format: "n5",
      decimals: 5
    });
  });
</script>

  • 输入
$(文档).ready(函数(){ //从输入HTML元素创建NumericTextBox $(“#数字”).kendonumeric文本框({ 格式:“n5”, 小数:5 }); });
本例显示输入框中的“17.00000”在有焦点之前,而“17”在焦点之后。

在聚焦时,剑道将保留小数位数的唯一方法(我所经历的)是如果数字已经具有指定精度的值,否则它将删除它们。您可以尝试修改该步骤,以便用户可以通过较小的量增加值

$("#numeric").kendoNumericTextBox({
     format: "n5",
     decimals: 5,
     step: 0.00001
});

祝你好运。

我找到的唯一解决方案是使用小部件配置中指定的格式基本上重建值,即添加十进制分隔符(如果需要)和缺少的尾随零。将下面的函数绑定到输入的焦点事件

function () {
    var input = $(this);
    var widget = input.data("kendoNumericTextBox");

    setTimeout(function () {
        if (widget !== undefined && input.val() !== "") {
          var format = widget._format(widget.options.format);
          var decimals = widget.options.decimals;

          if (decimals > 0) {
              var inputValue = input.val();
              var digits = inputValue.split(format["."]);

              if (digits.length == 1)
                  inputValue = inputValue + format["."];

              var l = digits[0].length + 1 + decimals;
              while (inputValue.length < l)
                  inputValue = inputValue + "0";

              input.val(inputValue);
            }
        }  
    }
}
函数(){
var输入=$(此);
var widget=input.data(“kendoNumericTextBox”);
setTimeout(函数(){
if(widget!==未定义&&input.val()!==“”){
var format=widget.\u格式(widget.options.format);
var decimals=widget.options.decimals;
如果(小数>0){
var inputValue=input.val();
var digits=inputValue.split(格式[“]”);
如果(位数.length==1)
inputValue=inputValue+格式[“]”;
var l=数字[0]。长度+1+小数;
while(inputValue.length
你可以发现你的例子被修改了