ここで、非表示の要素が検証されている場合は、カスタム属性data-val-visibleid
を追加します。その後、jquery.validate.js
で、私は両方の機能の末尾に以下を追加することにより、highlight
とunhighlight
機能を変更します。
if ($(element).is(":hidden")) {
var targetId = $(element).attr("data-val-visibleid");
$("#" + targetId).addClass(errorClass).removeClass(validClass);
}
一部の人々はjquery.validate.jsに干渉するのが好きではありませんが、それは通常、最も簡単ですメソッドを使用して、このようなカスタマイズを実現します。
UPDATE
私はいくつかの研究を行った、とjquery.validateは気の利いたsetDefault
あなたは、このようなハイライトとして、デフォルトの機能を、(オーバーライドできるメソッド、)とのハイライトを消しを持っていることを発見しました。
$.validator.setDefaults({
highlight: function (element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
if ($(element).is(":hidden")) {
var targetId = $(element).attr("data-val-visibleid");
$("#" + targetId).addClass(errorClass).removeClass(validClass);
}
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
if ($(element).is(":hidden")) {
var targetId = $(element).attr("data-val-visibleid");
$("#" + targetId).addClass(errorClass).removeClass(validClass);
}
}
});
これは、基本となるスクリプトを変更せずに、デフォルトの機能を上書きします。
私の最後のプロジェクトでは、jqueryまたはjqueryのUIを更新できませんでした。何人かの人がこれらのファイルをあまりにも多く変更したため、私はAPIファイルの変更が気に入らないものをサポートしています。より洗練されたソリューションがほしいと願っています – Anders
Anders、私はコアjquery.validateファイルの変更についてあまり喜んでいなかったので、さらにチェックし、setDefault関数があることがわかりました。あなたのカスタムオーバーライド。 – counsellorben
クールな、それは私が探しているものです! – Anders