Quero verificar se uma caixa de seleção acaba de ser desmarcada, quando um usuário clica nela. A razão para isso é porque eu quero fazer uma validação quando um usuário desmarca uma caixa de seleção. Porque pelo menos uma caixa de seleção precisa ser marcada. Portanto, se ele desmarcar o último, ele se auto-verifica novamente.
Com o jQuery, posso descobrir facilmente se está marcado ou não:
$('#check1').click(function() {
if($(this).is(':checked'))
alert('checked');
else
alert('unchecked');
});
Mas, na verdade, eu só quero ter uma instrução if que verifique se uma caixa de seleção acabou de ser desmarcada.
Então pensei que poderia fazer isso com o seguinte código:
$('#check2').click(function() {
if($(this).not(':checked'))
alert('unchecked');
else
alert('checked');
});
Mas isso sempre mostrará a mensagem 'desmarcada'. Não é exatamente o que eu esperava ...
demonstração: http://jsfiddle.net/tVM5H/
Então, eventualmente, preciso de algo como:
$('#check2').click(function() {
if($(this).not(':checked')) {
// Got unchecked, so something!!!
}
});
Mas obviamente isso não funciona. Prefiro não usar o primeiro exemplo, porque então eu teria uma instrução 'else' desnecessária quando só preciso de uma instrução 'if'.
Então, em primeiro lugar, isso é um bug do jQuery? Porque para mim é um comportamento inesperado. E em segundo lugar, alguém quer uma boa alternativa?