Jquery验证-允许数字不带前导零吗?

标签 jquery asp.net-mvc-2 jquery-validate

我正在使用 jquery 验证 ( http://docs.jquery.com/Plugins/Validation ),如下所示:

    var $__field = $("#selector");  
    if ($__field.is(":visible")) {  
        $__field.rules('add', { required: true });
        $__field.rules('add', { number: true });
    } 

如果用户输入一个没有前导零的数字,例如 0.5,则 jquery 验证会显示“请输入有效数字”。

如何更改验证以允许数字输入而不需要前导零?

最佳答案

问题出在用于数字的正则表达式上。正在查看the latest version ,第 1021-1023 行,我们得到:

number: function(value, element) {
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
},

问题在于,第一个 block (它查找前导负号和数字,无论是单独的还是以逗号分隔的三个一组)不是可选的:

(?:\d+|\d{1,3}(?:,\d{3})+)

在末尾添加 ? 将使其可选:

(?:\d+|\d{1,3}(?:,\d{3})+)?

通过此更新,您可以修改插件的本地副本,将正则表达式更改为修改后的版本,或者添加 replacement validation method到你的 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.");

在任何使用此 addMethod 调用的页面上,number 验证方法都将被覆盖,以执行不需要前导零的数字验证。

关于Jquery验证-允许数字不带前导零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129150/

相关文章:

javascript - 如果浏览器是Internet Explorer,如何避免某些JavaScript代码被执行?

javascript - 当我运行包含他的 JS 时,一个元素会跳起来

Jquery验证单击提交按钮两次ASP.Net core MVC项目

javascript - 当您将 function.apply 设置为 jQuery 集时,了解 function.apply 中的 "this"arg

javascript - 在所有浏览器中显示/隐藏 DOM 元素

javascript - 在表中查找特定行

asp.net-mvc - MVC2 + ASP.NET 4.0 + IIS6 + 无扩展名 URL,不再需要通配符映射?

c# - 在 Chrome 缓存中调试 MVC2 项目过于激进

asp.net-mvc-2 - 如何在 ASP.NET MVC 2 Views 文件夹中引用 javascript 文件?

javascript - 使用 jQuery 验证上传表单,在submitHandler() 中使用ajax...不起作用