Quiero comprobar si una casilla de verificación acaba de quedar sin marcar, cuando un usuario hace clic en ella. La razón de esto es porque quiero hacer una validación cuando un usuario desmarca una casilla de verificación. Porque es necesario marcar al menos una casilla de verificación. Entonces, si desmarca el último, automáticamente se vuelve a verificar.
Con jQuery puedo averiguar fácilmente si está marcado o no:
$('#check1').click(function() {
if($(this).is(':checked'))
alert('checked');
else
alert('unchecked');
});
Pero en realidad solo quiero tener una declaración if que verifique si una casilla de verificación acaba de estar desmarcada.
Entonces pensé que podría hacer eso con el siguiente código:
$('#check2').click(function() {
if($(this).not(':checked'))
alert('unchecked');
else
alert('checked');
});
Pero esto siempre mostrará el mensaje "sin marcar". No es realmente lo que esperaba ...
demostración: http://jsfiddle.net/tVM5H/
Así que eventualmente necesito algo como:
$('#check2').click(function() {
if($(this).not(':checked')) {
// Got unchecked, so something!!!
}
});
Pero obviamente esto no funciona. Prefiero no usar el primer ejemplo, porque entonces tendría una instrucción 'else' innecesaria cuando solo necesito una instrucción 'if'
Entonces, lo primero, ¿es esto un error de jQuery? Porque para mí es un comportamiento inesperado. Y en segundo lugar, ¿alguien quiere una buena alternativa?