Отримайте список встановлених прапорців у розділі за допомогою jQuery


231

Я хочу отримати список імен прапорців, які вибрані у діві з певним ідентифікатором. Як би це зробити за допомогою jQuery?

Наприклад, для цього div я хочу отримати масив ["c_n_0"; "c_n_3"] або рядок "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>

Відповіді:


434

Поєднання двох попередніх відповідей:

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

10
та інший комбо: var selected = $ ('# вхідні прапорці: позначено'). map (функція (i, el) {return el.name;}). get (); // Додати .join (';'), щоб отримати комбіновану рядок
roberkules

1
@ Алекс ЛЕ. Як мені отримати лише кількість вибраних прапорців? Мені просто потрібно перевірити, чи встановлено прапорець будь-який із прапорців всередині div.
ashishjmeshram

1
@Ashish. Просто напишіть: var count = $ ('# вхідні прапорці: зареєстрований'). Length;
Алекс ЛЕ

2
Непотрібний виклик конструктора var selected = new Array();. Краще (дешевше) зvar selected = [];
Поно

Як увімкнути його на changeфункції?
Si8

54

Це зробить?

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

9
$ (це) .визначено не працює. Використовуйте, якщо ($ (це) .attr ('перевірено')) або якщо ($ (це) .is (': перевірено'))
Стефан Штайгер

якщо .attr('checked')або .prop('checked')або .is(':checked')не працює, спробуйте.get(0).checked
emfi

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

дасть вам масив самих елементів. Якщо вам просто потрібні імена:

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

2
Я думаю, що слід повернути this.name або повернути $ (this) .attr ('ім'я');
Янсен Ціна

4
$("#checkboxes :checked").map(...)було б більш стисло. Як зазначає Янсен, так і має бути $(this).attr("name"); але я б вважав простим, this.nameякий повинен бути таким же сумісним.
Алекс Барретт

1
Це було чудово для простої карти. Я змінив, childrenщоб findподивитися глибше, і мені потрібні такі атрибути jquery $(this) (і написав цей коментар, коли я знову приїжджаю шукати ...)
goodeye

24

Мені знадобився підрахунок усіх прапорців, які перевіряються. Замість того, щоб написати цикл, я зробив це

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

Порівняйте його із загальною кількістю прапорців, щоб побачити, чи рівні вони. Сподіваюся, це комусь допоможе


9

Це працює для мене.

var selecteditems = [];

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

6

Ви також можете дати їм однакове ім'я, щоб вони були масивом , але присвоїли їм різні значення :

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

Тоді ви можете отримати лише значення лише відмічених за допомогою карти :

$('#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>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.