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?
jQuery para verificar verificado? Realmente?
if(!this.checked) {
Não use uma bazuca para fazer o trabalho de uma navalha.
fonte
$(this)[0].checked
.checked
onde eles.is('checked')
não funcionará por si só.$(document).ready(function() { $("#check1").click(function() { var checked = $(this).is(':checked'); if (checked) { alert('checked'); } else { alert('unchecked'); } }); });
fonte
<script type="text/javascript"> if(jQuery('input[id=input_id]').is(':checked')){ // Your Statment }else{ // Your Statment } OR if(jQuery('input[name=input_name]').is(':checked')){ // Your Statment }else{ // Your Statment } </script>
Código retirado daqui: http://chandreshrana.blogspot.in/2015/10/how-to-check-if-checkbox-is-checked-or.html
fonte
Confira algumas das respostas a esta pergunta - acho que pode se aplicar à sua:
como executar a função de clique após o comportamento padrão de um elemento
Acho que você está encontrando uma inconsistência na implementação da
onclick
função no navegador . Alguns optam por alternar a caixa de seleção antes de o evento ser disparado e alguns depois.fonte
A resposta já foi postada. Mas podemos usar o jquery dessa forma também
demo
$(function(){ $('#check1').click(function() { if($('#check1').attr('checked')) alert('checked'); else alert('unchecked'); }); $('#check2').click(function() { if(!$('#check2').attr('checked')) alert('unchecked'); else alert('checked'); }); });
fonte
Faça isso deste modo
if (typeof $(this).attr("checked") == "undefined" ) // To check if checkbox is checked if( $(this).attr("checked")=="checked")
fonte
this.checked
. A primeira linha não precisatypeof
disso (ela nunca gerará aReferencError
). Você também deve usar emprop()
vez deattr()
, que retornará um booleano, tornando o segundo também redundante.