2012-05-16 27 views
6

Estoy utilizando estos eventos para tratar de evaluar la entrada del formulario, pero si el navegador autocompleta el formulario, estos eventos no se disparan. ¿Cómo puedo hacer que el evento se active también?Jquery .keyup .keydown .keypress no detecta el autocompletar del navegador

+0

Investigué esto hace un tiempo y no creo que pueda, no hay ningún evento para un autorrelleno del navegador. Sin embargo, estaría interesado en cualquier respuesta :) –

+0

Sin saber exactamente lo que está haciendo, ¿podría agregar un controlador de evento '.change()' también? Honestamente, ni siquiera estoy seguro de si ese evento incluso se dispara con el autorrelleno del navegador. – jaredhoyt

+0

Probé '.change()' como sugirió Jared, pero si eso no funciona, es posible que tengas que usar '.blur()'. – nnnnnn

Respuesta

2

Desafortunadamente, no hay manera de detectar un autorrelleno del navegador. En su lugar, use setInterval, por ejemplo, para ejecutar una función a una frecuencia bastante alta que verifique si el valor original (o vacío) coincide con el valor de entrada y active la respuesta de esa manera. Si no quiere hacer eso, probablemente sea SOL ya que el navegador ni siquiera activará .change, y es muy probable que cualquier evento no sea compatible con varios navegadores.

También podría hacer que los eventos de validación se ejecuten en el envío del formulario también, lo que debería ser igual de efectivo.

+0

sí, el problema con la técnica de envío es que estoy cambiando el color del borde de entrada en función de la validación de los contenidos, por lo que necesito que el evento se active cada vez que se lo cambie. –

0

Puede simular un poco el comportamiento deseado vinculando los eventos .click() y/o .dblclick().

No está garantizado, pero podría obtener un clic adicional del mouse si deciden "aprobar" la autocompletación seleccionándola del cuadro.

2

Sé que es una pregunta bastante antigua, pero resolví el mismo problema usando e.preventDefault() después de la función de teclado.

$("#email").keyup(function (e) { 
     e.preventDefault(); 

De esta manera, si selecciona con ingresar la sugerencia del navegador de autocompletar se dará cuenta. El problema persiste cuando haces clic con el mouse en la sugerencia, pero funciona bien si presionas cualquier tecla después de haberla seleccionado.

SOLUCIÓN FINAL

me encontré con este post en stackoverflow: https://stackoverflow.com/a/24746108/3481005

y el uso de .on ("entrada") hace el truco!

$("#email").on("input",function (e) { 
Cuestiones relacionadas