jquery validate - 检查未满足的规则

时间:2011-10-04 13:33:56

标签: jquery validation jquery-validate validationrules

我有一个包含多个字段的表单并使用jQuery验证插件。我的意见有几条规则:

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

我想知道的是,我如何检查哪些规则未得到满足(或某些特定规则是否有效)。我知道这是可能的,因为远程验证不会触发ajax请求,直到其他人被完整填充,但我无法在jquery.validate.js中找到它是如何完成的。

1 个答案:

答案 0 :(得分:2)

我已经弄清楚如何通过检查jQuery验证插件的源代码来做到这一点,所以我自己创建了一个功能:

$.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
} 

从这个对象可以很容易地看出哪些规则不满足。