使用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/
鍵入one
或2
到輸入字段以 「模擬」 你的Ajax。
「醜陋」的方法:
或者,你必須從該插件控制的默認容器單獨創建&地方你自己的消息容器。您還需要邏輯來消除每次該字段通過驗證時的消息。這個解決方案有效,但它非常非常規,所以我不喜歡它。
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/
鍵入one
或2
到輸入字段以 「模擬」 你的Ajax。