JavaScript - ONCHANGE

 
Vista:

ONCHANGE

Publicado por Aritz (6 intervenciones) el 20/03/2007 16:41:37
Buenas tardes!

Tengo unos inputs que quiero que actualizen su valor cuando se cambien. El problema es que no me actualiza dichos valores hasta que no haga un click en la pantalla. Uso el evento onchange para conseguir esto...

Puede ser que el evento como tal necesite un click para comentar que se ha cambiado?? La verdad es que hasta ahora lo he usado sin problemas en un select, pero ahora necesito ese click que me molesta...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Sí y no

Publicado por Gonzalo (107 intervenciones) el 20/03/2007 19:16:47
Sí, porque no se produce inmediatamente, y no, porque no es necesario un click.

Me explico...

El evento onChange se produce cuando el valor cambia (evidente xD). Lo que ocurre es que el valor de un <input type="text" /> no "cambia" cuando parece que cambia.

Según vamos escribiendo o borrando, el valor del input no se actualiza. Esto es precisamente para que no sale el evento onChange con cada pulsación. El evento onChange en general va a ocurrir después de que el campo pierda el foco. Si el campo pierde el foco, saltará un evento onBlur y un evento onChange. Puede perder el foco porque hagamos click en otro sitio de la página o porque pulsemos el tabulador para cambiar al siguiente campo, porque la página pierda el foco (cambiemos de ventana)., etc.

Si lo que necesitas es capturar el evento cada vez que se escriba o borre algo, lo que necesitas onKeyPress (o bien onKeyDown o onKeyUp). Estos eventos se disparan cada vez que se pulsa una tecla (onKeyDown), se suelta (onKeyUp) o se produce un evento genérico de pulsación (onKeyPress).

Personalmente, salvo que realmente lo necesites, no te aconsejo capturar esos eventos. Si es por validar un campo, es mucho mejor hacerlo en el onBlur u onChange. Imagina que pides una fecha; no quieres validarla hasta que la haya escrito entera, no cuando tenga "03/".
Si no es por validación, sino que realmente utilizas lo que se haya escrito parcialmente (por ejemplo en un campo que sugiere autocompletado), entonces sí, utiliza onKeyPress.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar