Rufen Sie mit jQuery eine Liste der aktivierten Kontrollkästchen in einem div ab


231

Ich möchte eine Liste mit Namen von Kontrollkästchen erhalten, die in einem Div mit einer bestimmten ID ausgewählt sind. Wie würde ich das mit jQuery machen?

Zum Beispiel möchte ich für dieses div Array ["c_n_0"; "c_n_3"] oder eine Zeichenfolge "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>

Antworten:


434

Kombination von zwei vorherigen Antworten:

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

10
und eine andere Kombination: var selected = $ ('# checkboxes input: checked'). map (Funktion (i, el) {return el.name;}). get (); // füge .join (';') hinzu, um einen kombinierten String zu erhalten
roberkules

1
@ Alex LE. Wie erhalte ich nur die Anzahl der ausgewählten Kontrollkästchen? Ich muss nur überprüfen, ob eines der Kontrollkästchen im div aktiviert ist oder nicht.
Ashishjmeshram

1
@ Ashish. Schreiben Sie einfach: var count = $ ('# Checkboxen eingeben: aktiviert'). Länge;
Alex LE

2
Unnötiger Aufruf des Konstruktors var selected = new Array();. Besser (billiger) mitvar selected = [];
Pono

Wie bekomme ich es auf changeFunktion?
Si8

54

Würde das reichen?

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

9
$ (this) .checked funktioniert nicht. Verwenden Sie if ($ (this) .attr ('geprüft')) oder if ($ (this) .is (': geprüft'))
Stefan Steiger

wenn .attr('checked')oder .prop('checked')oder .is(':checked')nicht funktioniert, versuchen.get(0).checked
EMFi

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

gibt Ihnen eine Reihe der Elemente selbst. Wenn Sie nur speziell die Namen benötigen:

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

2
Ich denke, das sollte this.name oder $ (this) .attr ('name') zurückgeben;
Jansen Price

4
$("#checkboxes :checked").map(...)wäre prägnanter. Wie Jansen betont, sollte es sein $(this).attr("name"); aber ich würde eine einfache this.namein Betracht ziehen, die genauso kompatibel sein sollte.
Alex Barrett

1
Das war großartig für die einfache Karte. Ich wechselte childrenzu find, um tiefer zu schauen, und brauchte so verwendete jquery-Attribute $(this) (und schrieb diesen Kommentar, wenn ich wieder schaue ...)
goodeye

24

Ich brauchte die Anzahl aller Kontrollkästchen, die aktiviert sind. Anstatt eine Schleife zu schreiben, habe ich das getan

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

Vergleichen Sie es mit der Gesamtzahl der Kontrollkästchen, um festzustellen, ob sie gleich sind. Hoffe es wird jemandem helfen


9

Das funktioniert bei mir.

var selecteditems = [];

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

6

Sie können ihnen auch alle den gleichen Namen geben, damit sie ein Array sind , aber ihnen unterschiedliche Werte geben :

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

Mit map können Sie dann nur den Wert der angekreuzten Werte ermitteln :

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

Was ist der Vorteil dieser Lösung?
Luis Gouveia
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.