Ho scritto questo snippet di javascript/jQuery per cambiare una casella di controllo. http://jsfiddle.net/johnhoffman/crF93/Perché la modifica dinamica di una casella di controllo non attiva un evento di modifica del modulo?
Javascript
$(function() {
$("a").click(function() {
if ($("input[type='checkbox']").attr('checked') == "checked")
$("input[type='checkbox']").removeAttr('checked');
else
$("input[type='checkbox']").attr('checked', 'checked');
return false;
});
$("input[type='checkbox']").change(function(){
console.log("Checkbox changed.");
});
});
HTML
<input type="checkbox" />
<a href="#">Change CheckBox</a>
È interessante notare che, cliccando sul link altera la casella di testo, ma non attiva l'evento di modifica modulo che chiama la funzione che registra un messaggio in Chrome Console per gli sviluppatori Web. Perché? Come faccio a farlo?
[ "L'evento cambiamento si verifica quando un controllo perde il focus e il suo valore è stato modificato dal guadagnando attenzione. "] (http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-htmlevents) Nessun cambiamento di messa a fuoco significa nessun evento di cambiamento. –
possibile duplicato di [evento onchange non attivato quando la modifica proviene dalla funzione antoher] (http: // stackoverflow.it/questions/7055729/onchange-event-not-fire-when-the-change-come-from-antoher-function) –