2010-08-17 11 views

Respuesta

11

utiliza el evento keyup en lugar de keypress. keydown mostrará el valor de la pulsación previa, al igual que keypress (aparentemente).

+2

¿Extraño que @Tom sugiera que ya haya probado "onkeyup"? – MrWhite

+1

Sugeriría que no lo ha intentado correctamente entonces. –

+3

* keyup * solo se activará cuando se suelte la tecla, no se disparará por repetidas pulsaciones de teclas. Por lo tanto, si mantiene presionada la tecla para ingresar más de uno del mismo carácter, la tecla no se disparará hasta que se suelte la tecla. –

0

Porque la pulsación de tecla no se registra hasta que se produce el evento de tecla. Por lo tanto, debe detectar el evento onkeyup en lugar de onkeypress.

8

Dentro del evento keypress, aún es posible evitar que el carácter escrito se registre, por lo que el valor de la entrada no se puede actualizar hasta después del evento keypress. Puede usar el evento keyup en su lugar, o usar window.setTimeout() para configurar un retraso.

+0

+1 para * window.setTimeout() *, utilizando un retraso de 0ms es suficiente para que el código se ejecute inmediatamente después de que se actualice la entrada. –

+0

@Andy: Muy buen consejo. Funciona en (casi) todos los navegadores? –

+1

@Marcel: funcionará igual en todos los navegadores. Recomiendo leer J Resig [Cómo funcionan los temporizadores de JavaScript] (http://ejohn.org/blog/how-javascript-timers-work/) para obtener más detalles sobre el tema. –

Cuestiones relacionadas