我已经通过检查 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
}
从这个对象很容易看出哪些规则不满足。