Tôi đã có biểu mẫu với một loạt hộp văn bản bị tắt theo mặc định, sau đó được bật bằng cách sử dụng hộp kiểm bên cạnh mỗi hộp.Sử dụng phụ thuộc vào plugin Xác thực jQuery
Khi được bật, giá trị trong các hộp văn bản này bắt buộc phải là số hợp lệ, nhưng khi bị vô hiệu hóa, chúng không cần giá trị (hiển nhiên). Tôi đang sử dụng plugin jQuery Validation để thực hiện xác thực này, nhưng dường như nó không làm những gì tôi mong đợi.
Khi tôi nhấp vào hộp kiểm và tắt hộp văn bản, tôi vẫn nhận được lỗi trường không hợp lệ mặc dù mệnh đề depends
tôi đã thêm vào các quy tắc (xem mã bên dưới). Kỳ lạ thay, những gì thực sự xảy ra là thông báo lỗi cho thấy một giây thứ hai sau đó biến mất.
Dưới đây là một mẫu của danh sách các hộp kiểm & textbox:
<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>
Và đây là đoạn code jQuery Tôi đang sử dụng
//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');
}
}
});
});
Bỏ qua các lĩnh vực tiềm ẩn trong mỗi li
nó ở đó vì Tôi đang sử dụng phương pháp Html.Checkbox
của asp.net MVC.
Tôi đang nhận xét thay vì trả lời vì tôi chưa bao giờ sử dụng plugin xác thực. Bạn đã thử đặt textBox.validate() trong phần đúng của câu lệnh if kiểm tra hộp kiểm chưa? – cLFlaVA
Thật không may là không làm điều đó –