Проверка JQuery - разрешить число без начального нуля? - PullRequest
13 голосов
/ 28 июня 2010

Я использую проверку 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 говорит:действительный номер. "

Как я могу изменить проверку, чтобы разрешить ввод номера без начального нуля?

Ответы [ 2 ]

28 голосов
/ 30 октября 2010

Проблема с регулярным выражением, используемым для чисел. Глядя на последнюю версию , строки 1021-1023, мы получили:

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

Проблема в том, что этот первый блок, который ищет начальные отрицательные знаки и числа, индивидуально или в группах из трех, разделенных запятыми, не является обязательным:

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

Прикрепление ? на конце сделает его необязательным:

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

В этом обновлении вы можете либо изменить локальную копию плагина, изменив регулярное выражение на измененную версию, либо добавить метод проверки замены в свой 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 будет переопределен для проверки номера, для которой не требуется начальный ноль.

0 голосов
/ 20 января 2016

Решение, включенное в jQuery Validation 1.14.0, заботится о ведущей нулевой проблеме, но оставляет ведущую проблему отрицательного знака.-124 недействительно.-0.124 действует.RegEx, представленный в публикации выше, кажется, позволяет -124, поэтому я предпочитаю его решению по сравнению с jQuery Validation 1.14.0

...