Проверка Jquery не скрывает сообщение об ошибке, когда значение действительно - PullRequest
1 голос
/ 22 декабря 2009

Я написал десятичный метод проверки для проверки текста в текстовом поле:

$.validator.addMethod("decimalCheck", function(value) {
            var v = new RegExp("^\d*[0-9](\.\d*[0-9])?$", "g");
            return v.test(value);
        }, "Error here");

В первый раз я вставил строку «12,34» в текстовое поле и отобразил сообщение об ошибке. Во второй раз я вставил строку «12» в текстовое поле. Это допустимая строка, но сообщение об ошибке не скрывается.

Пожалуйста, помогите мне решить спасибо и наилучшими пожеланиями

1 Ответ

3 голосов
/ 22 декабря 2009

Попробуйте это (также слегка оптимизированное регулярное выражение с той же функциональностью)

$.validator.addMethod("decimalCheck", function(value) {
    var v = /^\d+(\.\d+)?$/;
    return v.test(value);
}, "Error here");

Ваша проблема в том, что вам нужно самостоятельно экранировать обратную косую черту (двойной выход), иначе конструктор регулярных выражений в действительности передаст эту строку ("^d*[0-9](.d*[0-9])?$")

var v = new RegExp("^\\d*[0-9](\\.\\d*[0-9])?$", "g");

кстати. использование здесь флага g может привести к неожиданным результатам. Лучше оставьте это, поскольку вы все равно используете ^ и $.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...