Ελέγξτε αν το πλαίσιο ελέγχου είναι επιλεγμένο με την jQuery

Πώς μπορώ να ελέγξω αν ένα πλαίσιο ελέγχου σε μια συστοιχία πλαισίων ελέγχου είναι επιλεγμένο χρησιμοποιώντας το id της συστοιχίας πλαισίων ελέγχου;

Χρησιμοποιώ τον ακόλουθο κώδικα, αλλά επιστρέφει πάντα τον αριθμό των τσεκαρισμένων checkboxes ανεξάρτητα από το id.

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

    if (checked == 0) {
        return false,
    } else {
        return true,
    }
}
$('#' + id).is(":checked")

Αυτό γίνεται αν το πλαίσιο ελέγχου είναι επιλεγμένο.

Για έναν πίνακα από checkboxes με το ίδιο όνομα μπορείτε να πάρετε τη λίστα με τα τσεκαρισμένα από:

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

Στη συνέχεια, για να κάνετε βρόχο μέσα από αυτά και να δείτε τι είναι τσεκαρισμένο μπορείτε να κάνετε:

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

Για να βρείτε πόσα έχουν ελεγχθεί, μπορείτε να κάνετε:

$boxes.length;
Σχόλια (11)
Λύση

Τα αναγνωριστικά πρέπει να είναι μοναδικά στο έγγραφό σας, πράγμα που σημαίνει ότι δεν πρέπει να το κάνετε αυτό:

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

Αντ' αυτού, αφήστε το αναγνωριστικό και στη συνέχεια επιλέξτε τα με βάση το όνομα ή με βάση ένα στοιχείο που τα περιέχει:


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

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

Και τώρα η 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;
Σχόλια (5)
$('#checkbox').is(':checked'); 

Ο παραπάνω κώδικας επιστρέφει true αν το checkbox είναι τσεκαρισμένο ή false αν δεν είναι.

Σχόλια (4)