我有一堆默認禁用的文本框的表單,然後通過使用每個旁邊的複選框啓用。使用取決於jQuery驗證插件
啓用後,這些文本框中的值必須是有效的數字,但禁用時,它們不需要值(顯然)。我使用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
方法。
我評論而不是回答,因爲我從來沒有使用驗證插件。你有沒有嘗試將textBox.validate()放入檢查複選框的if語句的真正部分內? – cLFlaVA 2008-12-19 01:14:58
不幸的是,沒有做到這一點 – 2008-12-19 04:50:44