2012-11-23 16 views
1

我猜测随着Kendo论坛工作方式即将发生的变化(只有付费客户),在那里得到问题的答案几乎没有机会,所以我会试试这里。 ..带4个小数位的NumericTextBox

我已经设置了一个可编辑的网格,它使用两个数字字段的自定义验证器。验证器使用ajax查询获取有效参数(但我认为这不重要)。

这是所有的工作,但我需要NumericTextBoxes支持4个小数位,他们不默认。

我已经为这些字段创建了自定义的网格编辑器,这使我可以输入4位小数,但它打破了自定义验证。

如何获取NumericTextBoxes在编辑模式下支持4位小数位并允许自定义验证规则?

在此先感谢

这里的字段定义,以验证我使用:

end: { type: 'number', validation: { 
    end: function(input){ 
     if (input.attr('name')=='end' && $('input[name=lookup]').val()!=''){ 
      $.ajax({ 
       type: 'post', 
       url: '/ajax/lookupParams', 
       data: { lookup:$('input[name=lookup]').val(), csrf_token: token }, 
       success: function(data) { 
        start = data.start; 
        end = data.end 
       }, 
        dataType: 'json', 
        async: false 
       }); 
      input.attr('data-end-msg', 'End must be between '+start+' and '+end); 
      return (input.val() >= start && input.val() <= end); 
     } 
     return true; 
    } 
} 

该位工作 - AJAX是用来检索有效的开始和结束值的基础上,查找字段的当前值。如果我使用自定义编辑器来支持4个小数位,它就会停止工作。

+0

一些代码可以帮助人们理解“自定义验证”的含义。 –

+0

这就是为什么'$ .ajax'调用具有'async:false'的原因 - 函数在继续之前等待'start'和'end'返回。就像我说的那样 - 验证工作是完美的,只是在与网格中的自定义编辑器结合使用时才会生效。 – Mat

回答

6

KendoUI NumericTextBoxes支持4个十进制和验证:

具有以下HTML:

<input id="num" value="123.456789" 
     data-format="n4" 
     data-decimals="4" 
     data-step="0.0001" 
     data-role="numerictextbox"/> 

和下面的初始化:

$("#num").kendoValidator({ 
    rules :{ 
     custom:function (input) { 
      var val = Math.floor(input.val() * 10000); 
      return val % 2; 
     } 
    }, 
    messages:{ 
     custom:"Your number * 10000 needs to be odd" 
    } 
}); 
kendo.init($("#num")); 

这定义了NumericTextBox与四位数字导向轴中可视化和编辑模式 - 并自定义Validator,检查您的十进制数字的最后一位数字是od d。

顺便说一下,欢迎来到KendoUI堆栈溢出!

+0

嗨Emiliano, 感谢您的提示,但我正在与一个Kendo网格,所以我无法以这种方式定义输入字段。 我已经添加了上面使用的自定义验证的示例。 – Mat