jquery validate - проверить, какое правило не выполняется - PullRequest
1 голос
/ 04 октября 2011

У меня есть форма с несколькими полями и использующий плагин проверки jQuery.Мой ввод имеет несколько правил:

{
    required : "#somecheckbox:not(:checked)",
    regex : "\d{10}",
    maxlength : 10,
    remote : [object Object],
    __dummy__ : true
} 

Что я хочу знать, так это как я могу проверить, какое из этих правил не выполняется (или какое-то конкретное правило действительно или нет).Я знаю, что это возможно, поскольку удаленная проверка не запускает ajax-запросы, пока другие не будут заполнены, но я не могу найти в jquery.validate.js, как это делается.

1 Ответ

2 голосов
/ 25 октября 2011

Я выяснил, как это сделать, изучив источник плагина jQuery validate, поэтому я сделал свою собственную функцию, чтобы подключиться к нему:

$.validator.prototype.ruleValidationStatus = function( element ) {
    element = $(element)[0];
    var rules = $(element).rules();
    var errors ={};
    for (var method in rules ) {
        var rule = { method: method, parameters: rules[method] };
        try {
            var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );

            errors[rule.method] = result ;

        } catch(e) {
            console.log(e);
        }
    }
    return errors;
} 

Простое использование:

$("#myform").validate().ruleValidationStatus($("#myField"))

И результат выборки:

{
    required : true,
    regex : true,
    maxlength : true,
    remote : false,
    __dummy__ : true
} 

Из этого объекта легко увидеть, какие правила не выполняются.

...