デフォルトで無効になっている一連のテキストボックスを含むフォームがあり、各ボックスの横にあるチェックボックスを使用して有効にしています。
有効にすると、これらのテキストボックスの値は有効な数値である必要がありますが、無効にすると値は必要ありません (明らかに)。この検証を行うために jQuery Validation プラグインを使用していますが、期待どおりに動作していないようです。
チェックボックスをクリックしてテキストボックスを無効にすると、ルールに句を追加したにもかかわらず、無効なフィールド エラーが引き続き発生depends
します (以下のコードを参照)。奇妙なことに、実際に起こることは、エラー メッセージが一瞬表示されてから消えてしまうことです。
チェックボックスとテキストボックスのリストのサンプルを次に示します。
<ul id="ItemList">
<li>
<label for="OneSelected">One</label><input id="OneSelected" name="OneSelected" type="checkbox" value="true" />
<input name="OneSelected" type="hidden" value="false" />
<input disabled="disabled" id="OneValue" name="OneValue" type="text" />
</li>
<li>
<label for="TwoSelected">Two</label><input id="TwoSelected" name="TwoSelected" type="checkbox" value="true" />
<input name="TwoSelected" type="hidden" value="false" />
<input disabled="disabled" id="TwoValue" name="TwoValue" type="text" />
</li>
</ul>
そして、これが私が使用しているjQueryコードです
//Wire up the click event on the checkbox
jQuery('#ItemList :checkbox').click(function(event) {
var textBox = jQuery(this).siblings(':text');
textBox.valid();
if (!jQuery(this).attr("checked")) {
textBox.attr('disabled', 'disabled');
textBox.val('');
} else {
textBox.removeAttr('disabled');
textBox[0].focus();
}
});
//Add the rules to each textbox
jQuery('#ItemList :text').each(function(e) {
jQuery(this).rules('add', {
required: {
depends: function(element) {
return jQuery(element).siblings(':checkbox').attr('checked');
}
},
number: {
depends: function(element) {
return jQuery(element).siblings(':checkbox').attr('checked');
}
}
});
});
li
asp.net MVC のHtml.Checkbox
メソッドを使用しているため、それぞれの隠しフィールドは無視してください。