我正在使用
jquery验证(
http://docs.jquery.com/Plugins/Validation):
var $__field = $("#selector"); if ($__field.is(":visible")) { $__field.rules('add',{ required: true }); $__field.rules('add',{ number: true }); }
如果用户输入一个没有前导零的数字,例如.5然后jquery验证说“请输入一个有效的数字”.
如何更改验证以允许号码输入,而不需要前导零?
解决方法
问题是用于数字的正则表达式.看着
the latest version,线1021-1023,我们有:
number: function(value,element) { return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value); },
问题是,这个第一个块,寻找领先的负号和数字,无论是个人还是以三分之一用逗号分隔,不是可选的:
(?:\d+|\d{1,\d{3})+)
纠正一个?最后会使其可选:
(?:\d+|\d{1,\d{3})+)?
通过此更新,您可以修改本地的插件副本,将正则表达式更改为修改的版本,或者将replacement validation method添加到您的javascript:
jQuery.validator.addMethod("number",function(value,\d{3})+)?(?:\.\d+)?$/.test(value); },"Please enter a valid number.");