Hvordan kan jeg kontrollere, om en afkrydsningsboks i et afkrydsningsfelt array er markeret ved hjælp af id'et for afkrydsningsfelt arrayet?
Jeg bruger følgende kode, men den returnerer altid antallet af afkrydsede afkrydsningsfelter uanset 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")
Det får, hvis afkrydsningsfeltet er markeret.
For et array af afkrydsningsfelter med samme navn kan du få listen over markerede afkrydsningsfelter ved at:
var $boxes = $('input[name=thename]:checked');
Hvis du så vil løbe gennem dem og se, hvad der er markeret, kan du gøre følgende:
$boxes.each(function(){
// Do stuff here with this
});
For at finde ud af, hvor mange der er markeret, kan du gøre:
$boxes.length;
ID'er skal være unikke i dit dokument, hvilket betyder, at du ikke bør gøre dette:
<input type="checkbox" name="chk[]" id="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" id="chk[]" value="Bananas" />
I stedet skal du droppe ID'et og derefter vælge dem efter navn eller efter et indeholdende element:
<fieldset id="checkArray">
<input type="checkbox" name="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" value="Bananas" />
</fieldset>
Og nu 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');
Ovenstående kode returnerer sandt, hvis afkrydsningsfeltet er markeret, og falsk, hvis det ikke er markeret.