JK.*_*JK. 13 jquery jquery-validate asp.net-mvc-2
我正在使用jquery验证(http://docs.jquery.com/Plugins/Validation),如下所示:
var $__field = $("#selector");
if ($__field.is(":visible")) {
$__field.rules('add', { required: true });
$__field.rules('add', { number: true });
}
Run Code Online (Sandbox Code Playgroud)
如果用户输入的数字没有前导零,例如.5则jquery验证说"请输入有效数字".
如何更改验证以允许数字输入而不需要前导零?
bof*_*ynn 28
问题在于用于数字的正则表达式.看看最新版本,第1021-1023行,我们得到了:
number: function(value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
},
Run Code Online (Sandbox Code Playgroud)
问题是,这个第一个块,它可以是单个的,也可以是以逗号分隔的三个一组中的前导负号和数字,它不是可选的:
(?:\d+|\d{1,3}(?:,\d{3})+)
Run Code Online (Sandbox Code Playgroud)
搭接一?对最终将使可选:
(?:\d+|\d{1,3}(?:,\d{3})+)?
Run Code Online (Sandbox Code Playgroud)
通过此更新,您可以修改插件的本地副本,将正则表达式更改为修改后的版本,或者在javascript中添加替换验证方法:
jQuery.validator.addMethod("number", function(value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
}, "Please enter a valid number.");
Run Code Online (Sandbox Code Playgroud)
在具有此addMethod调用的任何页面上,number将覆盖验证方法以执行不需要前导零的数字验证.