2011-02-01 19 views
8

tengo un campo input:¿Cómo uso jquery para validar un campo de entrada en el cambio?

<input type="text" name="notifyEmail" id="parametersEmail" value="" size=40 /> 

tengo un trozo de código jQuery que funciona cuando pulso pestaña o de lo contrario abandonar el campo, que llama a una rutina de validación:

$("#parametersEmail").blur(function(event) { 
    validateParameterEmail(); 
}); 

lo que yo gustaría hacer es ejecutar la función validateParameterEmail() siempre que el valor o el contenido del campo de entrada cambie.

Por lo tanto, a continuación, también probamos el manejador .change():

$("#parametersEmail").change(function(event) { 
    validateParameterEmail(); 
}); 

Pero cuando cambio el contenido de parametersEmail, este controlador no llama a la función de validación.

¿Hay otro controlador que debería estar utilizando, en su lugar? ¿O no puedo adjuntar múltiples manejadores de eventos al campo de entrada?

+2

fyi ... en un campo de entrada de texto, .blur() y .change() son prácticamente la misma cosa. La diferencia es desenfoque = perder enfoque mientras que cambio = perder enfoque + valor diferente. Siendo que tienes que perder el foco en cualquier forma. Si desea que se llame a la función cada vez que un usuario ingresa un carácter, como están ingresando, utilice la tecla .keyup o.keydown según lo mencionado por otros –

Respuesta

8

Trate $("#parametersEmail").keydown(function(event) {})

+4

o .keypress() o .keyup() –

+0

¡Sí! Muchas gracias. –

+9

'.keydown()' parece dispararse antes de que el valor de la entrada haya cambiado. En otras palabras, si escribe '1234', esto se validaría con' 123'. Del mismo modo, si escribe '1234 [eliminar]', se validaría en '1234'. '.keyup()' es probablemente mejor para la validación de formulario. – jonmorgan

0

cambio se refiere a cuando se hace clic de distancia/paso de la entrada. Usted puede busque onKeyUp().

6

Prueba esto:

$("#parametersEmail").bind('blur', function(event) {}); 

y

$("#parametersEmail").bind('keyup', function(event) {}); 
2

(Realidad tras año casi 2.017 º)

La mejor manera es fijar una vez que la devolución de llamada a todos necesita eventos sobre el cambio del valor de entrada.

hay:

  • keyup: usuario escribió algo en la entrada
  • cambio: método conocido común acerca de los cambios almacenados en la entrada
  • clic: algunas entradas reciben cambios de ratón demasiado
  • pasta : ¡Sí! Ctrl + V, Ctrl + Ins, RightMouseButton + Pega puede cambiar el valor de entrada demasiado
  • propertyChange: cuando algunos JS cambia nuestra entrada en cualquier forma, este evento será disparado
  • de entrada: nuevo evento de estándar que es compatible con todos los navegadores modernos, el uso también

Así, podemos establecer todos ellos una vez:

$("#parametersEmail").bind("propertychange change click keyup input paste", function(event) { 
    validateParameterEmail(); 
}); 

Espero que esto ayude a alguien. ;)

Cuestiones relacionadas