我有一个包含多个字段的表单并使用jQuery验证插件。我的意见有几条规则:
{
required : "#somecheckbox:not(:checked)",
regex : "\d{10}",
maxlength : 10,
remote : [object Object],
__dummy__ : true
}
我想知道的是,我如何检查哪些规则未得到满足(或某些特定规则是否有效)。我知道这是可能的,因为远程验证不会触发ajax请求,直到其他人被完整填充,但我无法在jquery.validate.js中找到它是如何完成的。
答案 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
}
从这个对象可以很容易地看出哪些规则不满足。