2010-08-17 6 views

risposta

11

utilizzare l'evento keyup anziché keypress. keydown mostrerà il valore del tasto precedente, così come lo sarà keypress (apparentemente).

+2

Strano che @Tom suggerisce di aver già provato "onkeyup"? – MrWhite

+1

Suggerirei che non è stato provato correttamente allora. –

+3

* keyup * si attiva solo quando la chiave viene rilasciata, non si attiva per le ripetute sequenze di tasti. Quindi, se stai tenendo premuto il tasto per inserire più di uno dello stesso personaggio, la chiave non verrà attivata fino a dopo il rilascio della chiave. –

0

Poiché la sequenza di tasti non viene registrata fino a quando si verifica un evento di tipo keyup. Quindi dovresti rilevare l'evento onkeyup invece di onkeypress.

8

All'interno dell'evento keypress, è ancora possibile impedire la registrazione del carattere digitato, pertanto il valore di input può essere aggiornato fino a dopo l'evento keypress. Puoi invece utilizzare l'evento keyup oppure utilizzare window.setTimeout() per impostare un ritardo.

+0

+1 per * window.setTimeout() *, utilizzando un ritardo di 0 ms è sufficiente che il codice venga eseguito immediatamente dopo l'aggiornamento dell'ingresso. –

+0

@Andy: un suggerimento molto carino. Funziona in (quasi) tutti i browser? –

+1

@Marcel: funzionerà allo stesso modo in ogni browser. Raccomando di leggere J Resig's [Come funzionano i timer JavaScript] (http://ejohn.org/blog/how-javascript-timers-work/) per maggiori dettagli sull'argomento. –

Problemi correlati