Controllare se la casella di controllo è controllata con jQuery

Come posso controllare se una casella di controllo in un array di checkbox è controllata usando l'id dell'array di checkbox?

Sto usando il seguente codice, ma restituisce sempre il conteggio delle caselle di controllo controllate indipendentemente dall'id.

funzione isCheckedById(id) {
    alert(id);
    var checked = $("input[@id=" + id + "]:checked").length;
    alert(checked);

    se (checked == 0) {
        ritorna false;
    } else {
        ritorna true;
    }
}
$('#' + id).is(":checked")

Che ottiene se la casella di controllo è selezionata.

Per un array di caselle di controllo con lo stesso nome si può ottenere la lista di quelle controllate da:

var $boxes = $('input[name=thename]:checked');

Poi, per fare un ciclo e vedere cosa è spuntato, si può fare:

$boxes.each(function(){
    // Do stuff here with this
});

Per trovare quanti sono controllati si può fare:

$boxes.length;
Commentari (11)
Soluzione

Gli ID devono essere unici nel tuo documento, il che significa che non dovresti farlo:

<input type="checkbox" name="chk[]" id="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" id="chk[]" value="Bananas" />

Invece, lasciate cadere l'ID, e poi selezionateli per nome, o per un elemento contenente:


    <input type="checkbox" name="chk[]" value="Apples" />

    <input type="checkbox" name="chk[]" value="Bananas" />

E ora il jQuery:

var atLeastOneIsChecked = $('#checkArray:checkbox:checked').length > 0;
//there should be no space between identifier and selector

// or, without the container:

var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;
Commentari (5)
$('#checkbox').is(':checked'); 

Il codice di cui sopra restituisce true se la checkbox è selezionata o false se non lo è.

Commentari (4)