Voglio controllare se una casella di controllo è appena stata deselezionata, quando un utente fa clic su di essa. Il motivo è perché desidero eseguire una convalida quando un utente deseleziona una casella di controllo. Perché almeno una casella di controllo deve essere selezionata. Quindi, se deseleziona l'ultimo, si ricontrolla automaticamente.
Con jQuery posso facilmente scoprire se è controllato o meno:
$('#check1').click(function() {
if($(this).is(':checked'))
alert('checked');
else
alert('unchecked');
});
Ma in realtà voglio solo avere un'istruzione if che controlla se una casella di controllo è appena stata deselezionata.
Quindi ho pensato di poterlo fare con il seguente codice:
$('#check2').click(function() {
if($(this).not(':checked'))
alert('unchecked');
else
alert('checked');
});
Ma questo mostrerà sempre il messaggio "deselezionato". Non proprio quello che mi aspettavo ...
demo: http://jsfiddle.net/tVM5H/
Quindi alla fine ho bisogno di qualcosa come:
$('#check2').click(function() {
if($(this).not(':checked')) {
// Got unchecked, so something!!!
}
});
Ma ovviamente questo non funziona. Preferisco non usare il primo esempio, perché poi avrei un'istruzione "else" non necessaria quando ho bisogno solo di un'istruzione "if".
Quindi, per prima cosa, è un bug di jQuery? Perché per me è un comportamento inaspettato. E secondo, qualcuno ha idea di una buona alternativa?