Nhận danh sách các hộp kiểm tra trong div bằng jQuery


231

Tôi muốn nhận danh sách tên của các hộp kiểm được chọn trong div với 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?

Ví dụ, đối với div này, tôi muốn lấy mảng ["cầu0"; "cầu3"] hoặc một chuỗi "cầu0; cầu3"

<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>

Câu trả lời:


434

Kết hợp hai câu trả lời trước:

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

10
và một kết hợp khác: var được chọn = $ ('# hộp kiểm đầu vào: đã kiểm tra'). map (function (i, el) {return el.name;}). get (); // thêm .join (';') để có được chuỗi kết hợp
roberkules

1
@Alex LÊ. Làm thế nào để tôi chỉ nhận được số lượng các 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 bên trong div được chọn hay không.
ashishjmeshram

1
@Ashish. Chỉ cần viết: var Count = $ ('# hộp kiểm đầu vào: đã kiểm tra'). Chiều dài;
Alex LE

2
Cuộc gọi không cần thiết của nhà xây dựng var selected = new Array();. Tốt hơn (rẻ hơn) vớivar selected = [];
Pono

Làm thế nào để tôi có được nó trên changechức năng?
Si8

54

Điều này sẽ làm gì?

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

9
$ (cái này) .checked không hoạt động. Sử dụng if ($ (này) .attr ('đã kiểm tra')) hoặc nếu ($ (này) .is (': đã kiểm tra'))
Stefan Steiger

nếu .attr('checked')hay .prop('checked')hoặc .is(':checked')không làm việc, thử.get(0).checked
emfi

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

sẽ cung cấp cho bạn một loạt các yếu tố chính họ. 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ả lại this.name hoặc trả lại $ (this) .attr ('name');
Jansen Giá

4
$("#checkboxes :checked").map(...)sẽ ngắn gọn hơn Như Jansen chỉ ra, nó nên như vậy $(this).attr("name"); nhưng tôi sẽ xem xét một đơn giản this.namenên tương thích.
Alex Barrett

1
Điều này là tuyệt vời cho bản đồ đơn giản. Tôi đã thay đổi childrenđể findnhìn sâu hơn và cần các thuộc tính jquery được sử dụng $(this) (và đã viết nhận xét này khi tôi tìm kiếm lại ...)
goodeye

24

Tôi cần số lượng của tất cả các hộp kiểm tra. 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 tra xem chúng có bằng nhau không. Hy vọng nó sẽ giúp được ai đó


9

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

var selecteditems = [];

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

6

Bạn cũng có thể đặt cho chúng tất cả cùng một tên để chúng là một mảng , nhưng cung cấp cho chúng các giá trị khác nhau :

<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 chỉ có thể nhận giá trị của những người được đánh dấu bằng bản đồ :

$('#checkboxes input:checked[name="c_n[]"]')
            .map(function () { return $(this).val(); }).get()

0
function listselect() {
                var selected = [];
                $('.SelectPhone').prop('checked', function () {

                    selected.push($(this).val());
                });

                alert(selected.length);
     <input type="checkbox" name="SelectPhone" class="SelectPhone"  value="1" />
         <input type="checkbox" name="SelectPhone" class="SelectPhone"  value="2" />
         <input type="checkbox" name="SelectPhone" class="SelectPhone"  value="3" />
        <button onclick="listselect()">show count</button>

0
 var agencias = [];
 $('#Div input:checked').each(function(index, item){
 agencias.push(item.nextElementSibling.attributes.for.nodeValue);
 });

Ưu điểm của giải pháp này là gì?
Luis Gouveia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.