基于 jQuery.validator.addMethod 的字段的条件规则
Conditional rules on the fields based on jQuery.validator.addMethod
我有两个 jQuery.validator.addMethod,名为 "A" 和 "B"。
是否可以根据不同的方法对字段设置条件规则?例如:
$("#form2").validate( {
rules: {
inputVal: {
//if condition = true, A:true, else run B:true
}
}
...
});
Is it possible to set conditional rules on the fields based on different methods?
不行,不能在.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;
}
}
}
},
...
});
演示:http://jsfiddle.net/nL2sk069/
否则,您可以简单地编写一个结合了方法 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; });
我有两个 jQuery.validator.addMethod,名为 "A" 和 "B"。
是否可以根据不同的方法对字段设置条件规则?例如:
$("#form2").validate( {
rules: {
inputVal: {
//if condition = true, A:true, else run B:true
}
}
...
});
Is it possible to set conditional rules on the fields based on different methods?
不行,不能在.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;
}
}
}
},
...
});
演示:http://jsfiddle.net/nL2sk069/
否则,您可以简单地编写一个结合了方法 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; });