2

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

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

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

4

1 回答 1

2

我已经通过检查 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
} 

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

于 2011-10-25T13:41:16.323 回答