Utilizzo di jquery per ottenere tutte le caselle di controllo selezionate con un determinato nome di classe


215

So di poter ottenere tutte le caselle di controllo selezionate su una pagina usando questo:

$('input[type=checkbox]').each(function () {
    var sThisVal = (this.checked ? $(this).val() : "");
});

Ma ora sto usando questo in una pagina che ha alcune altre caselle di controllo che non voglio includere. Come cambierei il codice sopra per guardare solo le caselle spuntate che hanno una certa classe su di esse?


Devo aggiornare il titolo da dire classinvece di name?
Russ Cam

@Russ Cam - già fatto
leora

Anche $ ('input [type = checkbox] :checked') funzionerà.
fantastico il

Risposte:


392

$('.theClass:checkbox:checked')ti darà tutte le caselle di controllo selezionate con la classe theClass.


9
Bello. Inoltre, $ ('. TheClass: checkbox: not (: checked)') otterrà tutti quelli non selezionati.
Venugopal M,

Posso farlo per tutte le caselle con il nome?
FluffyBeing

Come posso aggiungere un'altra classe sugli elementi selezionati? Voglio mostrare il bordo sugli elementi di input selezionati.
Najam Us Saqib,

120
$('input:checkbox.class').each(function () {
       var sThisVal = (this.checked ? $(this).val() : "");
  });

Un esempio da dimostrare.

:checkboxè un selettore per le caselle di controllo (in effetti, potresti omettere la inputparte del selettore, anche se ho trovato casi di nicchia in cui potresti ottenere strani risultati facendo questo nelle versioni precedenti della libreria. Sono sicuro che sono stati corretti nelle versioni successive). .classè il selettore per l'attributo della classe element che contiene class.


9
Note di Jquery su: la casella di controllo consiglia di attenersi a [type = "checkbox"]. $ ('[type = "checkbox"]. class') .... o $ ('input [type = "checkbox"]. class')
TSmith,

@TSmith hai un riferimento?
Russ Cam

9
L'ho letto da qui: api.jquery.com/checkbox-selector ... sotto "Note aggiuntive"
TSmith

73

.mapEsempio obbligatorio :

var checkedVals = $('.theClass:checkbox:checked').map(function() {
    return this.value;
}).get();
alert(checkedVals.join(","));

3
$ ('input.theClass: checked'). map (function () {return this.value}). get (). join (',');
Fedir RYKHTIK

@Fedir: il tuo comando dà on,oncome risultato ('on' per ogni casella selezionata)
Jay

@Jay Devi impostare gli attributi di valore delle tue caselle di controllo per ottenere il loro valore in una stringa separata da coma
Kamran Ali

21
$('input.yourClass:checkbox:checked').each(function () {
    var sThisVal = $(this).val();
});

Ciò otterrebbe tutte le caselle di controllo del nome della classe "yourClass". Mi piace questo esempio poiché utilizza il selettore jQuery controllato anziché eseguire un controllo condizionale. Personalmente userei anche un array per memorizzare il valore, quindi usarli secondo necessità, come:

var arr = [];
$('input.yourClass:checkbox:checked').each(function () {
    arr.push($(this).val());
});

Se fosse necessario memorizzare i valori in un array, .mappotrebbe essere un'alternativa più piacevole, come illustrato dalla risposta di karim79.
Duplode

1
grazie :) dovevo trovare tutte le caselle di controllo selezionate e la tua risposta lo fa.
Uk,

13

Se è necessario ottenere il valore di tutte le caselle di controllo selezionate come matrice:

let myArray = (function() {
    let a = [];
    $(".checkboxes:checked").each(function() {
        a.push(this.value);
    });
    return a;
})()

10
 $('input.theclass[type=checkbox]').each(function () {
   var sThisVal = (this.checked ? $(this).val() : "");
 });

8

Non sono sicuro che sia di aiuto per il tuo caso particolare e non sono sicuro che nel tuo caso le caselle di controllo che desideri includere siano tutte parte di un singolo modulo o div o tabella, ma puoi sempre selezionare tutte le caselle di controllo all'interno di un elemento specifico. Per esempio:

<ul id="selective">
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
</ul>

Quindi, usando il seguente jQuery, passa SOLO attraverso le caselle di controllo all'interno di quell'UL con id = "selettivo":

$('#selective input:checkbox').each(function () {
 var sThisVal = (this.checked ? $(this).val() : "");
});


7

Puoi usare qualcosa del genere:
HTML:

<div><input class="yourClass" type="checkbox" value="1" checked></div>
<div><input class="yourClass" type="checkbox" value="2"></div>
<div><input class="yourClass" type="checkbox" value="3" checked></div>
<div><input class="yourClass" type="checkbox" value="4"></div>


JQuery:

$(".yourClass:checkbox").filter(":checked")


Sceglierà i valori di 1 e 3.


Questa è la risposta migliore
Marcos Buarque,

7

Modo semplice per ottenere tutti i valori in un array

var valores = (function () {
    var valor = [];
    $('input.className[type=checkbox]').each(function () {
        if (this.checked)
            valor.push($(this).val());
    });
    return valor;

})();

console.log(valores);

7

Puoi provare così

let values = (function() {
                let a = [];
                $(".chkboxes:checked").each(function() {
                    a.push($(this).val());
                });
                return a;
            })();

4
<input type="checkbox" id="Checkbox1" class = "chk" value = "1" />
<input type="checkbox" id="Checkbox2" class = "chk" value = "2" />
<input type="checkbox" id="Checkbox3" class = "chk" value = "3" />
<input type="checkbox" id="Checkbox4" class = "chk" value = "4" />
<input type="button" id="demo" value = "Demo" />

<script type = "text/javascript" src = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
    $("#demo").live("click", function () {
        $("input:checkbox[class=chk]:checked").each(function () {
            alert("Id: " + $(this).attr("id") + " Value: " + $(this).val());
        });
    });
</script>

http://www.jqueryfaqs.com/Articles/Get-values-of-all-checked-checkboxes-by-class-name-using-jQuery.aspx


3

So che questo ha già un sacco di ottime risposte su questa domanda, ma l'ho trovato mentre navigavo e lo trovo davvero facile da usare. Ho pensato di condividere per chiunque altro alla ricerca.

HTML:

<fieldset>
    <!-- these will be affected by check all -->
    <div><input type="checkbox" class="checkall"> Check all</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
</fieldset>
<fieldset>
    <!-- these won't be affected by check all; different field set -->
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
</fieldset>

jQuery:

$(function () {
    $('.checkall').on('click', function () {
        $(this).closest('fieldset').find(':checkbox').prop('checked', this.checked);
    });
});

Riferimento: "Controlla tutto" più semplice con jQuery


1
$(document).ready(function(){
    $('input.checkD[type="checkbox"]').click(function(){
        if($(this).prop("checked") == true){
            $(this).val('true');
        }
        else if($(this).prop("checked") == false){
            $(this).val('false');
        }
    });
});

per favore considera di aggiungere un commento per spiegare la tua risposta in modo che sia più facile da capire per i non iniziati
Simas Joneliunas

-1
$("input[name='<your_name_of_selected_group_checkboxes>']:checked").val()

1
per favore spiega di cosa tratta questo codice. Aiuterà gli altri a capire
Shafin Mahmud il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.