ここにユースケースがあります:MVC3控えめな検証:要素のグループから検証を削除/再接続する方法は?
私は、ユーザーが目に見える入力の1つで特定の選択をする場合にのみ表示されるフィールドのグループを持つこの長いフォームを持っています。私がjQuery.validator.unobtrusive.parse( '。extra-data')と思った主題に関するBrad Wilsonの記事を読む.extra-dataは隠れたdivのクラスです。最初の解析が完了した時点でデータが既に存在していたので運はありません。
$('.data-panel').find('input[type="text"], textarea, select').each(function (i, item) {
var currentRules = $(item).rules('remove'); // Saving removed rules to a sorta dictionary
if (!$.isEmptyObject(currentRules)) {
removedRules[$(item).attr("name")] = currentRules;
}
});
と、これは、それらを再アタッチする:
だから最後に、私はルールを削除するには、この思い付いた
$('.data-panel').find('input[type="text"], textarea, select').each(function (i, item) {
if (!$.isEmptyObject(removedRules[$(item).attr('name')])) {
$(item).rules('add', removedRules[$(item).attr('name')]);
}
});
問題がある、それは私が「とちょっとハック感じています文字通り各フィールドを通過し、それらの検証ルールを削除して再接続します。私の質問です:より簡単な方法はありませんか?パフォーマンスも問題であり、そのような巨大なフォームの1つで、クリックと検証実行の間の遅延を感じることができます。
http://stackoverflow.com/questions/5104288/adding-validation-with-mvc-3-jquery-validator-in-execution-time –