TwitterブートストラップでASP.net MVCを使用しています。
ブートストラップでエラーのあるフィールドを適切にスタイルするために、次を追加しました
$.validator.setDefaults({
highlight: function (element) {
$(element).closest(".control-group").addClass("error");
},
unhighlight: function (element) {
$(element).closest(".control-group").removeClass("error");
}
});
これは、カスタム検証属性を除くすべての検証でうまく機能します。私が作成したカスタムバリデーターは、チェックボックスがチェックされているかどうかを確認し、チェックされていない場合は、テキストフィールドに何かが入力されることを期待しています。これは一例にすぎませんが、私が作成した他のカスタム検証属性は、以下で説明するのと同じ方法で失敗します。
フォームを送信すると、カスタム バリデータのあるフィールドを除いて、すべてのエラーが適切にスタイル設定されます。ただし、エラーメッセージが表示されたためにバリデーターが実行されたことはわかっていますが、メッセージとフィールドは赤ではなく黒です。
バリデータを満たすためにフィールドにテキストを入力すると、エラーメッセージが消えます。次に、そのテキストを削除すると、エラー メッセージが返され、すべてが本来あるべき赤のスタイルになります。
次に、フォームを再度送信すると、エラーが残っていても赤いスタイリングは消えますが、カスタムバリデータのあるフィールドについてのみ、他のすべてのエラーは赤いままです。
フォームの送信時に、設定したデフォルト (上記) はカスタム バリデータを含むフィールドに対しては実行されませんが、他のすべてに対してはデフォルトが実行されます。
それでも、カスタム バリデーターを使用したフィールドで on blur および key up イベントを使用すると、すべてが期待どおりに動作し、すべてのスタイリングが期待どおりに機能します。
私は次に何を見るべきか途方に暮れています。ヘルプ/指示をいただければ幸いです。