Validate プラグインのすべてのメソッドで、ルールは単純に合格/不合格です。失敗すると、メッセージが表示されます。彼らが通過するとき、メッセージはありません。 return true
カスタムメソッドで、合格しました(メッセージなし)...return false
そして失敗しました(メッセージ)。
プラグインでは、デフォルトで「複合ルール」が複数のメソッドで処理されます。次の「複合ルール」は、たとえば4 つのメソッドで処理されます...
rules: {
myfield: {
required: true,
digits: true,
minlength: 5,
email: true
}
}
ただし、単一の方法で「複合ルール」を作成しようとしています。
したがって、論理的な解決策は、プラグインのように単純に行うことです。2 つの独自のカスタム メソッドを使用します。メッセージの配置をまったく変更する必要がないため、私はこの方法を好みます。これは、すべての「複合」ルールがプラグインによって内部的に処理される方法です。
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
または a2
を入力フィールドに入力して、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/
aone
または a2
を入力フィールドに入力して、ajax を「シミュレート」します。