对于 Validate 插件中的每个方法,规则只是通过/失败。当它们失败时,您会收到一条消息;当他们通过时,没有消息。 return true
在您的自定义方法上并且您通过了(没有消息)......return false
并且您失败了(消息)。
在插件中,默认情况下,“复合规则”使用多种方法处理。下面的“复合规则”用四种方法处理,例如......
rules: {
myfield: {
required: true,
digits: true,
minlength: 5,
email: true
}
}
但是,您正试图用一种方法来制定“复合规则”。
因此,合乎逻辑的解决方案是您只需像插件一样进行操作;有两种独特的自定义方法。我更喜欢这种方法,因为我们根本不必篡改消息放置。这就是插件在内部处理所有“复合”规则的方式。
jQuery.validator.addMethod("feedvalid", function(value, element) {
//Ajax call here which returns
var retMsg = ajax()
if (retMsg == "one") {
return false; // failed, show message
} else {
return true;
}
}, "not a valid url");
jQuery.validator.addMethod("feedreach", function(value, element) {
//Ajax call here which returns
var retMsg = ajax()
if (retMsg == "2") {
return false; // failed, show message
} else {
return true;
}
}, "not a reachable url");
模拟:http: //jsfiddle.net/At555/
在输入字段中键入 aone
或 a以“模拟”您的 ajax。2
“丑陋”的方法:
或者,您必须将自己的消息容器与插件控制的默认容器分开创建和放置。您还需要在每次字段通过验证时清除消息的逻辑。这个解决方案有效,但它非常非常规,所以我不喜欢它。
jQuery.validator.addMethod("feed", function(value, element) {
//Ajax call here which returns
var retMsg = ajax()
if (retMsg == "one") {
$('#myErrContainer').text("not valid url");
return false; // failed
} else if (retMsg == "2") {
$('#myErrContainer').text("not reachable url");
return false; // failed
} else {
$('#myErrContainer').text();
return true; // passed
}
}, "");
模拟:http: //jsfiddle.net/vnpG4/
在输入字段中键入 aone
或 a以“模拟”您的 ajax。2