È questo un malinteso principale dell'evento di clic predefinito sugli input della casella di controllo o un codice imperfetto?

StackOverflow https://stackoverflow.com/questions/7435142

Domanda

Quando si vincola a un evento di clic per un input della casella di controllo, la casella di controllo è già attivata quando il mio gestore di eventi esegue e, più stranamente, il disattivazione viene invertito dopo che il mio gestore eventi è stato eseguito se specifichi event.preventDefault ();

<input id="foo" type="checkbox"/>

function clicked(evt) {
   alert(document.getElementById('foo').checked);
   evt.preventDefault();
}

document.getElementById('foo').addEventListener('click',clicked);

Testato in Chrome e Firefox

Jsfiddle per quel codice

L'avviso risponderà "vero" (o lo stato opposto della casella di controllo pre-clic). Dopo aver respinto l'avviso, la casella di controllo allinea indietro.

Quindi, immagino che le domande siano,

Qual è l'evento predefinito effettivo prevenuto? Ho torto nel presumere che il mio gestore di eventi dovrebbe essere in esecuzione prima che lo stato sia cambiato? C'è un modo per intercettare legittimamente una casella di controllo?

E perché nel mondo la prevenzione di Default sta causando il riesaminamento della casella di controllo?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top