2012-06-13 40 views
6

Tôi có một bộ chọn thả xuống, với các giá trị từ 1-4. Tùy thuộc vào lựa chọn, các đầu vào tiếp theo trong biểu mẫu bị ẩn và yêu cầu xác thực được loại bỏ khỏi mỗi mục. ví dụ, nếu 2 được chọn, thì đầu vào 1-2 được hiển thị và yêu cầu xác thực được thêm vào trong khi 3-4 bị ẩn và xác thực bị xóa.Xác nhận Jquery: Thêm/Loại bỏ Quy tắc Tự động dựa trên lựa chọn thả xuống

$("#dropdownSelector").change(function() { 
inputtohide = $(this).val(); 
$('input[id*=conviction]').slice(0, inputtohide).show().rules("add", {required: "#convictions_0:checked" }); 
$('input[id*=conviction]').slice(inputtohide, 4).hide().rules("remove", {required: "#convictions_0:checked" }); 
$("#thisform").validate(); 
}); 

này hoạt động tốt, tuy nhiên (như tài liệu hướng dẫn cho các tiểu bang xác nhận plugin) xác nhận là chỉ gia tăng đối với các yếu tố đầu tiên trả lại.

Tôi hiểu từ bài viết khác, rằng đoạn mã sau nên thêm xác nhận cho mỗi đầu vào: -

$("#thisform").validate(); 
$("input[id*=conviction]").each(function() { 
    $(this).rules("add", {required: "#convictions_0:checked" }); 

    }); 

Câu hỏi của tôi là làm thế nào để kết hợp hai bit của mã? Bất kỳ trợ giúp nào được đánh giá cao, cảm ơn.

Trả lời

5

Bạn chỉ cần sử dụng chức năng .each() trên .slice() kết quả của bạn theo thứ tự để lặp qua tất cả các yếu tố đó trả về:

$('input[id*=conviction]').slice(0, inputtohide).each(function(){ 
    $(this).show().rules("add", {required: "#convictions_0:checked" }); 
}); 

$('input[id*=conviction]').slice(inputtohide, 4).each(function(){ 
    $(this).hide().rules("remove", {required: "#convictions_0:checked" }); 
}); 

Hope this helps!

+0

Cảm ơn @FreekOne, đó là một trợ giúp tuyệt vời. Nó đã thêm các quy tắc một cách chính xác, nhưng chương trình/ẩn đã ngừng hoạt động chính xác. Tôi đã thay đổi nó một chút và nó hoạt động ngay bây giờ - thankyou: - 'code' $ ('input [id * = conviction]'). Slice (0, inputtohide) .show(). Each (function() {$ (this) .rules ("thêm", {bắt buộc: "# convictions_0: checked"});}); $ ('input [id * = conviction]'). slice (inputtohide, 4) .hide(). each (function() {$ (this) .rules ("remove", {required: "# convictions_0: checked" });}); 'code' – naturelab

+0

@naturelab Tôi không chắc tại sao' show'/'hide' sẽ ngừng hoạt động vì mã là đúng, nhưng tôi rất vui vì tôi có thể trợ giúp! –

Các vấn đề liên quan