Πώς μπορώ να ελέγξω αν ένα πλαίσιο ελέγχου σε μια συστοιχία πλαισίων ελέγχου είναι επιλεγμένο χρησιμοποιώντας το 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;
Τα αναγνωριστικά πρέπει να είναι μοναδικά στο έγγραφό σας, πράγμα που σημαίνει ότι δεν πρέπει να το κάνετε αυτό:
<input type="checkbox" name="chk[]" id="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" id="chk[]" value="Bananas" />
Αντ' αυτού, αφήστε το αναγνωριστικό και στη συνέχεια επιλέξτε τα με βάση το όνομα ή με βάση ένα στοιχείο που τα περιέχει:
<fieldset id="checkArray">
<input type="checkbox" name="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" value="Bananas" />
</fieldset>
Και τώρα η 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;
$('#checkbox').is(':checked');
Ο παραπάνω κώδικας επιστρέφει true αν το checkbox είναι τσεκαρισμένο ή false αν δεν είναι.