Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/04/2009, 23:45
Avatar de jeybi
jeybi
 
Fecha de Ingreso: julio-2008
Ubicación: Mexico
Mensajes: 130
Antigüedad: 16 años, 5 meses
Puntos: 10
Respuesta: onchange en textbox?

El problema de onkeypress y parecidos, es que tienes que saber controlarlos, por ejemplo, onkeypress solo lanza caracteres imprimibles y es el recomendado para este tipo de cosas, sin embargo al llegar al tope "maxlength" el evento se seguira disparando, tu debes comparar entonces la longitud de lo escrito con lel valor de dicha propiedad, claro, esto solo es necesario si haces algo que realmente necesite el control preciso.

Otro problema que es mas común, es que cuando se dispara el keypress aun no se ha escrito nada en el input, y podria ser un problema, en este caso la solucion seria crear otro manejador de evento para onkeyup, pero aqui surje otro problema si solo deseamos manejar caracteres, debemos checar si la tecla pulsada es imprimible, ya que keyup se dispara con todas las teclas (flechas, shift, ctrol). Ademas de esto, onkeypress no se dispara cuando se presiona el backspace o suprimir, y conduce a mas problemas.

Como te digo, es posible que estos problemas no sean relevantes(como pasa en la mayoria de los casos), afortunadamente hay un evento que hace lo que buscas, dispararse a cualquier cambio (incluyendo si el usuario hace un paste en el input, cosa que ni onkeypress ni onchange lo detectarían al momento), respeta maxlenght y backspaces, vamos se lanza solo cuando hay un cambio, este evento se llama "input" pero solo es soportado por firefox y safari (al menos eso creo yo).

Puedes probarlo con elemento.addEventListener('input',funcion).

Saludos!