2010-11-03 29 views
98

Tôi biết cách xem liệu một hộp kiểm cá nhân có được chọn hay không.jQuery xem nếu có hoặc không có hộp kiểm nào được chọn

Nhưng Im gặp rắc rối với những điều sau đây - được đưa ra một id hình thức tôi cần phải xem nếu bất kỳ của các hộp kiểm được lựa chọn (nghĩa là 1 trở lên), và tôi cần phải nhìn thấy nếu none được chọn. Về cơ bản tôi cần hai hàm riêng biệt để trả lời hai câu hỏi này. Trợ giúp sẽ được đánh giá cao. Cảm ơn!

Thực ra, tôi chỉ cần một hàm để cho tôi biết nếu không có nào được chọn. Biết điều này sẽ trả lời câu hỏi khác.

+0

http://stackoverflow.com/questions/901712/check-checkbox-checked-property-using-jquery –

Trả lời

192

Bạn có thể sử dụng một cái gì đó như thế này

if ($("#formID input:checkbox:checked").length > 0) 
{ 
    // any one is checked 
} 
else 
{ 
    // none is checked 
} 
+6

'$ (" # formID inpu t: checkbox: checked "). length' cũng đủ ở đây, quá – Damon

+1

jQuery doc http://api.jquery.com/checked-selector/ –

+0

@Damon Tôi đoán bạn có nghĩa là' if ($ ("# formID input: checkbox: checked "). length) {}' (không có '> 0') sẽ là đủ vì 0 là giá trị falsey, xem http://james.padolsey.com/javascript/truthy-falsey/ –

6

Bạn có thể làm điều này:

if ($('#form_id :checkbox:checked').length > 0){ 
    // one or more checkboxes are checked 
    } 
    else{ 
    // no checkboxes are checked 
    } 

đâu:

  • :checkbox lọc selector chọn tất cả hộp kiểm.
  • :checked sẽ chọn kiểm tra hộp kiểm
  • length sẽ cung cấp số lượng những người kiểm tra có
+0

jQuery nói về bộ chọn ': checkbox':' Để có hiệu suất tốt hơn trong trình duyệt hiện đại, hãy sử dụng hộp kiểm [type = " "]', xem http://api.jquery.com/checkbox-selector/ –

3

Bạn có thể làm một sự trở lại đơn giản của .length ở đây:

function areAnyChecked(formID) { 
    return !!$('#'+formID+' input[type=checkbox]:checked').length; 
} 

Cái nhìn này cho các hộp kiểm trong biểu mẫu đã cho, xem nếu có bất kỳ số nào là :checked và trả lại true nếu chúng là (vì độ dài sẽ bằng 0 nếu không). Để làm cho nó rõ ràng hơn một chút, đây là phiên bản không boolean được chuyển đổi:

function howManyAreChecked(formID) { 
    return $('#'+formID+' input[type=checkbox]:checked').length; 
} 

Điều này sẽ trả về số lượng đã được kiểm tra.

21

JQuery .is sẽ kiểm tra tất cả các yếu tố quy định và trả về true nếu ít nhất một trong số họ phù hợp với selector:

if ($(":checkbox[name='choices']", form).is(":checked")) 
{ 
    // one or more checked 
} 
else 
{ 
    // nothing checked 
} 
+0

Mặc dù 'is()' có vẻ hoạt động, có ': checked' trực tiếp trong bộ chọn như được chỉ ra trong câu trả lời của @ rahul có vẻ thích hợp hơn. là() có vẻ hữu ích hơn khi "bên trong gọi lại", xem http://api.jquery.com/is/. Hay tôi đang thiếu một cái gì đó? –

+0

Không, đó là khá nhiều những gì được viết trong tài liệu - bạn kiểm tra xem một phần tử có khớp với thuộc tính được chỉ định hay không. Áp dụng nó như là bộ lọc và sau đó kiểm tra nếu bạn nhận được ít nhất một mục trong kết quả là như nhau nhưng imo dài hơn và không quá biểu cảm. –

+0

+1 cho thực tế là '.is (": checked ")' trong giải pháp của bạn là biểu cảm hơn, không chắc chắn về phần còn lại mặc dù. –

2

câu trả lời Rahul là phù hợp nhất cho câu hỏi của bạn. Dù sao, nếu bạn có một nhóm các hộp kiểm để được kiểm tra và không phải tất cả các hộp kiểm trong biểu mẫu của bạn, bạn có thể đi cho nó.

Đặt một classname cho tất cả các hộp kiểm bên bạn muốn kiểm tra, nói ví dụ, một classname test_check và bây giờ bạn có thể kiểm tra nếu có các hộp kiểm được kiểm tra thuộc nhóm bằng cách:

$("#formID .test_check:checked").length > 0 

Nếu nó trả về true, giả sử rằng một hoặc nhiều hộp kiểm được chọn có tên lớp là test_check và không có kiểm tra nào nếu trả về false.

Hy vọng nó sẽ giúp ai đó.Cảm ơn:) -

1

Đây là những gì tôi đã sử dụng để kiểm tra nếu có hộp kiểm trong danh sách các hộp kiểm đã thay đổi:

$('input[type="checkbox"]').change(function(){ 

     var itemName = $('select option:selected').text(); 

     //Do something. 

});  
0

Nếu không sử dụng 'chiều dài' bạn có thể làm điều đó như thế này:

if ($('input[type=checkbox]').is(":checked")) { 
     //any one is checked 
} 
else { 
//none is checked 
} 
Các vấn đề liên quan