Come posso catturare l'evento di controllo / deselezione di <input type="checkbox" />
con jQuery?
Come posso catturare l'evento di controllo / deselezione di <input type="checkbox" />
con jQuery?
Risposte:
<input type="checkbox" id="something" />
$("#something").click( function(){
if( $(this).is(':checked') ) alert("checked");
});
Modifica: questa operazione non verrà rilevata quando la casella di controllo cambia per motivi diversi da un clic, come l'utilizzo della tastiera. Per evitare questo problema, ascolta change
invece di click
.
Per selezionare / deselezionare a livello di programmazione, dai un'occhiata a Perché il mio evento di modifica della casella di controllo non viene attivato?
change
invece di fare clic. Sto aggiornando la risposta
Il clic influenzerà un'etichetta se ne abbiamo una allegata alla casella di controllo di input?
Penso che sia meglio usare la funzione .change ()
<input type="checkbox" id="something" />
$("#something").change( function(){
alert("state changed");
});
Utilizzare il selettore : verificato per determinare lo stato della casella di controllo:
$('input[type=checkbox]').click(function() {
if($(this).is(':checked')) {
...
} else {
...
}
});
Per JQuery 1.7+ utilizzare:
$('input[type=checkbox]').on('change', function() {
...
});
Usa lo snippet di codice di seguito per ottenere questo:
$('#checkAll').click(function(){
$("#checkboxes input").attr('checked','checked');
});
$('#UncheckAll').click(function(){
$("#checkboxes input").attr('checked',false);
});
Oppure puoi fare lo stesso con una singola casella di controllo:
$('#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');
}
});
Per la demo: http://jsfiddle.net/creativegala/hTtxe/
Nella mia esperienza, ho dovuto sfruttare l'attuale Target dell'evento:
$("#dingus").click( function (event) {
if ($(event.currentTarget).is(':checked')) {
//checkbox is checked
}
});
Questo codice fa ciò di cui hai bisogno:
<input type="checkbox" id="check" >check it</input>
$("#check").change( function(){
if( $(this).is(':checked') ) {
alert("checked");
}else{
alert("unchecked");
}
});
Inoltre, puoi controllarlo su jsfiddle
usa l'evento click per una migliore compatibilità 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>