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?
jQuery para comprobar si está marcado? De Verdad?
if(!this.checked) {
No uses una bazuca para hacer el trabajo de una navaja.
fuente
$(this)[0].checked
.checked
donde tienen.is('checked')
no funcionará por sí solo.$(document).ready(function() { $("#check1").click(function() { var checked = $(this).is(':checked'); if (checked) { alert('checked'); } else { alert('unchecked'); } }); });
fuente
<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 tomado de aquí: http://chandreshrana.blogspot.in/2015/10/how-to-check-if-checkbox-is-checked-or.html
fuente
Consulte algunas de las respuestas a esta pregunta; creo que podría aplicarse a la suya:
cómo ejecutar la función de clic después del comportamiento predeterminado de un elemento
Creo que se está encontrando con una inconsistencia en la implementación del navegador de la
onclick
función. Algunos eligen alternar la casilla de verificación antes de que se active el evento y otros después.fuente
La respuesta ya se publicó. Pero también podemos usar jquery de esta manera
manifestación
$(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'); }); });
fuente
Hazlo asi
if (typeof $(this).attr("checked") == "undefined" ) // To check if checkbox is checked if( $(this).attr("checked")=="checked")
fuente
this.checked
. La primera línea no necesitatypeof
allí (nunca generará aReferencError
). También debería usar enprop()
lugar deattr()
, que devolverá un booleano, lo que hace que su segundo también sea redundante.