2010-01-28 65 views
171

Tôi muốn nhận danh sách các hộp kiểm được chọn trong div có id nhất định. Làm thế nào tôi có thể làm điều đó bằng cách sử dụng jQuery?Nhận danh sách các hộp kiểm đã chọn trong div bằng cách sử dụng jQuery

Ví dụ: đối với div này tôi muốn nhận mảng ["c_n_0"; "c_n_3"] hoặc một chuỗi "c_n_0; c_n_3"

<div id="checkboxes"> 
    <input id="chkbx_0" type="checkbox" name="c_n_0" checked="checked" />Option 1 
    <input id="chkbx_1" type="checkbox" name="c_n_1" />Option 2 
    <input id="chkbx_2" type="checkbox" name="c_n_2" />Option 3 
    <input id="chkbx_3" type="checkbox" name="c_n_3" checked="checked" />Option 4 
</div> 

Trả lời

333

Sự kết hợp của hai câu trả lời trước:

var selected = []; 
$('#checkboxes input:checked').each(function() { 
    selected.push($(this).attr('name')); 
}); 
+9

và combo khác: var selected = $ ('# checkboxes input: checked'). Bản đồ (hàm (i, el) {return el.name;}). get(); // thêm .join (';') để nhận chuỗi kết hợp – roberkules

+6

đã thêm http://jsfiddle.net/dvCmR/ – roberkules

+1

@Alex LE. Làm cách nào để tôi chỉ nhận được số lượng hộp kiểm đã chọn? Tôi chỉ cần kiểm tra xem có bất kỳ hộp kiểm nào trong div được chọn hay không. – ashishjmeshram

38

Điều này có làm được không?

var selected = []; 
$('div#checkboxes input[type=checkbox]').each(function() { 
    if ($(this).is(":checked")) { 
     selected.push($(this).attr('name')); 
    } 
}); 
+8

$ (this) .checked không hoạt động. Sử dụng nếu ($ (this) .attr ('checked')) hoặc nếu ($ (this) .is (': checked')) –

34
$("#checkboxes").children("input:checked") 

sẽ cung cấp cho bạn một loạt các yếu tố tự. Nếu bạn chỉ cần đặc biệt tên:

$("#checkboxes").children("input:checked").map(function() { 
    return this.name; 
}); 
+2

Tôi nghĩ rằng nên trả về this.name hoặc trả về $ (this) .attr ('Tên'); –

+4

'$ (" # hộp kiểm: đã chọn "). Bản đồ (...)' sẽ ngắn gọn hơn. Như Jansen chỉ ra, nó phải là '$ (this) .attr (" name ")'; nhưng tôi sẽ xem xét một 'this.name' đơn giản nên tương thích. –

+0

vâng, bạn nói đúng, this.name sẽ tốt hơn – Corey

6

này làm việc cho tôi.

var selecteditems = []; 

$("#Div").find("input:checked").each(function (i, ob) { 
    selecteditems.push($(ob).val()); 
}); 
16

Tôi cần đếm số hộp kiểm được chọn. Thay vì viết một vòng lặp tôi đã làm điều này

$(".myCheckBoxClass:checked").length; 

So sánh nó với tổng số hộp kiểm để xem chúng có bình đẳng không. Hy vọng nó sẽ giúp một ai đó

4

Bạn cũng có thể cung cấp cho họ tất cả cùng tên so they are an array, nhưng cung cấp cho họ khác nhau giá trị:

<div id="checkboxes"> 
    <input type="checkbox" name="c_n[]" value="c_n_0" checked="checked" />Option 1 
    <input type="checkbox" name="c_n[]" value="c_n_1" />Option 2 
    <input type="checkbox" name="c_n[]" value="c_n_2" />Option 3 
    <input type="checkbox" name="c_n[]" value="c_n_3" checked="checked" />Option 4 
</div> 

Sau đó bạn có thể nhận được chỉ giá trị của chỉ những người đánh dấu using map :

$('#checkboxes input:checked[name="c_n[]"]') 
      .map(function() { return $(this).val(); }).get() 
Các vấn đề liên quan