Jquery validation - allow number without the leading zero?

痴心易碎 提交于 2019-11-27 03:18:18

问题


I'm using jquery validation (http://docs.jquery.com/Plugins/Validation) like so:

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

If the user enters a number without a leading zero, eg .5 then jquery validation says "Please enter a valid number."

How can I change the validation to allow number entry without requiring the leading zero?


回答1:


The problem is with the regular expression used for numbers. Looking at the latest version, lines 1021-1023, we've got:

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

The problem is that this first chunk, which looks for leading negative sign and numbers, either individual or in groups of three separated by commas, is not optional:

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

Tacking a ? on the end will make it optional:

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

With this update, you can either modify your local copy of the plugin, changing the regular expression to the modified version, or add a replacement validation method to your 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.");

On any page with this addMethod call, the number validation method will be overridden to do a number validation that doesn't require a leading zero.




回答2:


The solution included in jQuery Validation 1.14.0 takes care of the leading zero issue but leaves a leading negative sign issue. -.124 is invalid. -0.124 is valid. The RegEx provided in the posting above seems to allow -.124 so I favor it over the solution in jQuery Validation 1.14.0



来源:https://stackoverflow.com/questions/3129150/jquery-validation-allow-number-without-the-leading-zero

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!