2013-02-23 15 views
7

ho questo codice semplice:Javascript: onchange evento non viene generato quando il valore è cambiato nel caso in onKeyUp

<body> 
     <input type="text" onkeyup="this.value = (new Date()).getSeconds()" onchange="alert(1)" /> 
    </body> 

io Dont't so perché il valore di testo è cambiato quando si preme il tasto ma l'evento onchange non spara Come posso attivare l'evento onchange?

+0

utilizzare oninput per tutto tranne ie –

+0

Utilizzare: 'onkeyup =" this.value = (new Date()). GetSeconds(); this.onchange(); "' – Ian

+0

@Barmar, Ian: I do not need l'evento onchange si verifica subito dopo il valore della modifica della casella di testo nella funzione onkeyup. Ho bisogno che l'avviso (1) mostri quando clicco sulla pagina per lasciare la casella di testo. – hieund

risposta

1

Il onchange si attiva quando si lascia il focus da esso (se sono state apportate modifiche). Questo comportamento si verifica solo con i tipi di input text e textarea perché javascript non sa quando hai finito di digitare.

Non so perché c'è una casella di controllo nel codice, ma qualunque sia. Cordiali saluti, non sono in grado di dirti perché, ma il problema è il cambio di valore dinamico sull'input (una supposizione sarebbe che il cambiamento non viene eseguito dall'utente, ma io davvero non lo so), se rimuovi il codice all'interno della onkeyup funzionerà. In ogni caso, se ciò che si desidera è eseguire un codice quando l'input perde il focus, è possibile utilizzare onblur invece, in questo caso è più preciso.

+0

spiegazione per i downvotes? Vorrei una correzione con quello, se non rimarrò sbagliato. – martriay

+0

"perché lo faresti?" : Perché devo ottenere il valore di input quando keyup, se non è valido, lo correggo e restituisco il valore valido. Dopo aver modificato il valore di input, farò qualcos'altro nell'evento onchange. Ma, in questo codice SEMPLICE, l'onchange non viene attivato anche quando clicco sulla pagina per lasciare attiva la casella di testo. (puoi copiarlo nel blocco note, salvare come html per verificare) – hieund

+0

Non so perché ci sia una casella di controllo nel codice, ma qualunque sia. Cordiali saluti, non sono in grado di dirti perché, ma il problema è il cambio di valore dinamico sull'input (una supposizione sarebbe che il cambiamento non viene eseguito dall'utente, ma io davvero non lo so), se rimuovi il codice all'interno di 'onkeyup', funzionerà. In ogni caso, se quello che vuoi è eseguire un codice quando l'input perde il focus, puoi usare 'onblur', invece, è più accurato in quel caso. – martriay

Problemi correlati