Jquery validation - allow number without the leading zero?

前端 未结 2 613
无人及你
无人及你 2020-12-10 04:22

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

    var $__field = $(\"#selector\");  
    if ($__field.is(\":visible\")) {         


        
2条回答
  •  再見小時候
    2020-12-10 04:47

    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.

提交回复
热议问题