我有两个jQuery.validator.addMethod,名为" A"和" B"。
是否可以根据不同的方法在字段上设置条件规则?例如:
$("#form2").validate( {
rules: {
inputVal: {
//if condition = true, A:true, else run B:true
}
}
...
});
答案 0 :(得分:2)
是否可以根据不同的方法在字段上设置条件规则?
不,您无法根据.validate()
方法中的不同条件设置不同的规则。每个字段的对象字面值只能包含逗号分隔的key:value
对列表,表示所需的方法和参数。
但是,您可以使用depends
属性有条件地为每个方法设置参数,通过打开或关闭规则来有效地实现相同的目的......
$("#form2").validate( {
rules: {
inputVal: { // <- field name
method_A:
depends: function(element) {
// activate/disable method A
return (condition) ? true : false;
}
},
method_B:
depends: function(element) {
// disable/activate method B
return (condition) ? false : true;
}
}
}
},
...
});
DEMO:http://jsfiddle.net/nL2sk069/
否则,您可以简单地编写一种新方法,该方法结合了方法A和A的功能。 B,只是评估你的状况。
var message;
$.validator.addMethod('method_C', function(value, element, param) {
var result;
if (condition) {
// validate value as per A
result = (value === "A") ? true : false; // (pass or fail)
message = "custom message A";
} else {
// validate value as per B
result = (value === "B") ? true : false; // (pass or fail)
message = "custom message B";
}
return this.optional(element) || result;
}, function() { return message; });