Stabilire con certezza se una checkbox è stata selezionata o meno è alquanto difficile con i due metodi che jQuery ci fornisce, vale a dire attr()
e prop()
. Infatti entrambi questi metodi a volte non restituiscono il valore sperato.
Il metodo attr()
viene frainteso dagli sviluppatori. Infatti questo metodo non restituisce affatto un valore booleano, ma una stringa:
var checkbox = $('#checkbox');
if(checkbox.attr('checked')) {
//...
}
Il metodo prop()
, dal canto suo, restituisce un valore booleano ma il risultato è spesso incoerente specie quando si inviano i form legando il codice all'evento submit
.
La soluzione consiste nell'utilizzare la proprietà checked
del DOM legata ad ogni checkbox. Questa proprietà restituisce un valore booleano ed è affidabile:
var checkbox = $('#checkbox')[0]; // elemento DOM
if(checkbox.checked) {
//...
}