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
Respuesta
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.
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. –
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.
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) {
- 1. jQuery - keydown/keypress/keyup ENTERKEY detección?
- 2. jQuery .keypress & .keydown .which
- 3. Combinar keypress y keyup - jQuery
- 4. Diferencia entre el evento KeyDown, el evento KeyPress y el evento KeyUp en Visual Studio
- 5. catch-all keyup/keydown events en iframe?
- 6. Javascript keyup/keydown en .NET WebBrowser Control
- 7. Detecta el navegador firefox con jquery
- 8. jQuery autocompletar no seleccionar elemento
- 9. jQuery $ (document) .keydown() issues
- 10. Reposicionamiento de jQuery UI Autocompletar en el tamaño del navegador
- 11. ¿Por qué no se detecta el espacio de retroceso mediante el evento jQuery keypress?
- 12. jQuery: keyPress ¿El retroceso no se disparará?
- 13. jquery-ui autocompletar no selecciona ingrese
- 14. Solr jQuery Autocompletar no autocompletar
- 15. jQuery UI Autocompletar DownArrow UpArrow
- 16. Simular Keypress Con jQuery
- 17. Javascript/jQuery Keypress logging
- 18. jQuery Autocompletar no aparece
- 19. jquery autocompletar no funciona
- 20. jQuery keypress left/right navigation
- 21. jQuery autocompletar autofoco no mantener
- 22. Manejo de la clave JavaScript y compatibilidad del navegador
- 23. jQuery UI Autocompletar: desencadenar una búsqueda Desde fuera de autocompletar
- 24. JQuery UI Autocompletar Posición
- 25. ¿El evento KeyDown no se activa con .NET WinForms?
- 26. jQuery se unen a keyUp solamente, no se centran
- 27. $ (document) no .keydown trabajo
- 28. jquery keypress event disparando un par de veces
- 29. Eliminar el historial del navegador usando jQuery
- 30. jQuery Mobile focus siguiente entrada en keypress
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 :) –
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
Probé '.change()' como sugirió Jared, pero si eso no funciona, es posible que tengas que usar '.blur()'. – nnnnnn