Saltar al contenido

Detectar el autocompletado del navegador

Solución:

El problema es que el autocompletar se maneja de manera diferente por diferentes navegadores. Algunos envían el evento de cambio, otros no. Por lo tanto, es casi imposible conectarse a un evento que se activa cuando el navegador autocompleta un campo de entrada.

  • Cambiar el activador de eventos para diferentes navegadores:

    • Para campos de nombre de usuario / contraseña:

      1. Firefox 4, IE 7 e IE 8 no envían el evento de cambio.
      2. Safari 5 y Chrome 9 envían el evento de cambio.
    • Para otros campos de formulario:

      1. IE 7 e IE 8 no envían el evento de cambio.
      2. Firefox 4 envía el evento de cambio de cambio cuando los usuarios seleccionan un valor de una lista de sugerencias y tabulan fuera del campo.
      3. Chrome 9 no envía el evento de cambio.
      4. Safari 5 envía el evento de cambio.

Sus mejores opciones son deshabilitar la función de autocompletar para un formulario usando autocomplete="off" en su formulario o encuesta a intervalos regulares para ver si está lleno.

Para su pregunta sobre si está completado en o antes del documento, ya está listo de nuevo, varía de un navegador a otro e incluso de una versión a otra. Para los campos de nombre de usuario / contraseña solo cuando selecciona un campo de contraseña de nombre de usuario está lleno. Entonces, en conjunto, tendría un código muy desordenado si intenta adjuntarlo a cualquier evento.

Puedes tener una buena lectura sobre esto AQUÍ

Solución para navegadores WebKit

De los documentos de MDN para : -webkit-autofill Pseudoclase CSS:

La pseudoclase: -webkit-autofill CSS coincide cuando un elemento tiene su valor autocompletado por el navegador

Podemos definir un vacío transición Regla CSS en el deseado <input> elemento una vez que es :-webkit-autofilled. JS podrá engancharse al animationstart evento.

Créditos para el equipo de Klarna UI. Vea su buena implementación aquí:

  • Reglas CSS
  • Gancho JS

Esto me funciona en las últimas versiones de Firefox, Chrome y Edge:

$('#email').on('blur input', function() {
    ....
});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *