¿Cómo puedo detectar el evento de verificación / desmarcación <input type="checkbox" />
con jQuery?
¿Cómo puedo detectar el evento de verificación / desmarcación <input type="checkbox" />
con jQuery?
Respuestas:
<input type="checkbox" id="something" />
$("#something").click( function(){
if( $(this).is(':checked') ) alert("checked");
});
Editar: hacer esto no se detectará cuando la casilla de verificación cambie por otros motivos que no sean un clic, como usar el teclado. Para evitar este problema, escuche en change
lugar de click
.
Para marcar / desmarcar programáticamente, eche un vistazo a ¿Por qué no se activa mi evento de cambio de casilla de verificación?
change
lugar de hacer clic. Estoy actualizando la respuesta
¿El clic afectará a una etiqueta si tenemos una adjunta a la casilla de entrada?
Creo que es mejor usar la función .change ()
<input type="checkbox" id="something" />
$("#something").change( function(){
alert("state changed");
});
Para usar JQuery 1.7+:
$('input[type=checkbox]').on('change', function() {
...
});
Use el fragmento de código a continuación para lograr esto .:
$('#checkAll').click(function(){
$("#checkboxes input").attr('checked','checked');
});
$('#UncheckAll').click(function(){
$("#checkboxes input").attr('checked',false);
});
O puede hacer lo mismo con la casilla de verificación única:
$('#checkAll').click(function(e) {
if($('#checkAll').attr('checked') == 'checked') {
$("#checkboxes input").attr('checked','checked');
$('#checkAll').val('off');
} else {
$("#checkboxes input").attr('checked', false);
$('#checkAll').val('on');
}
});
Para demostración: http://jsfiddle.net/creativegala/hTtxe/
En mi experiencia, he tenido que aprovechar el objetivo actual del evento:
$("#dingus").click( function (event) {
if ($(event.currentTarget).is(':checked')) {
//checkbox is checked
}
});
Este código hace lo que necesita:
<input type="checkbox" id="check" >check it</input>
$("#check").change( function(){
if( $(this).is(':checked') ) {
alert("checked");
}else{
alert("unchecked");
}
});
Además, puedes consultarlo en jsfiddle
use el evento click para una mejor compatibilidad con MSIE
$(document).ready(function() {
$("input[type=checkbox]").click(function() {
alert("state changed");
});
});
$(document).ready(function(){
checkUncheckAll("#select_all","[name='check_boxes[]']");
});
var NUM_BOXES = 10;
// last checkbox the user clicked
var last = -1;
function check(event) {
// in IE, the event object is a property of the window object
// in Mozilla, event object is passed to event handlers as a parameter
event = event || window.event;
var num = parseInt(/box\[(\d+)\]/.exec(this.name)[1]);
if (event.shiftKey && last != -1) {
var di = num > last ? 1 : -1;
for (var i = last; i != num; i += di)
document.forms.boxes['box[' + i + ']'].checked = true;
}
last = num;
}
function init() {
for (var i = 0; i < NUM_BOXES; i++)
document.forms.boxes['box[' + i + ']'].onclick = check;
}
HTML:
<body onload="init()">
<form name="boxes">
<input name="box[0]" type="checkbox">
<input name="box[1]" type="checkbox">
<input name="box[2]" type="checkbox">
<input name="box[3]" type="checkbox">
<input name="box[4]" type="checkbox">
<input name="box[5]" type="checkbox">
<input name="box[6]" type="checkbox">
<input name="box[7]" type="checkbox">
<input name="box[8]" type="checkbox">
<input name="box[9]" type="checkbox">
</form>
</body>