¿Cómo saber si un navegador ha rellenado automáticamente un cuadro de texto? Especialmente con los cuadros de nombre de usuario y contraseña que se rellenan automáticamente al cargar la página.
Mi primera pregunta es ¿cuándo ocurre esto en la secuencia de carga de la página? ¿Es antes o después de document.ready?
En segundo lugar, ¿cómo puedo utilizar la lógica para averiguar si esto ocurrió? No es que quiero dejar de esto ocurra, sólo gancho en el evento. Preferiblemente algo como esto:
if (autoFilled == true) {
} else {
}
Si es posible me encantaría ver un jsfiddle mostrando su respuesta.
Posibles duplicados
https://stackoverflow.com/questions/3535738/dom-event-for-browser-password-autofill
https://stackoverflow.com/questions/4938242/browser-autofill-and-javascript-triggered-events
--Ambas preguntas no explican realmente qué eventos se activan, sólo vuelven a comprobar continuamente la caja de texto (¡no es bueno para el rendimiento!).
El problema es que los distintos navegadores gestionan el autorrelleno de forma diferente. Algunos envían el evento de cambio, otros no. Así que es casi imposible engancharse a un evento que se dispara cuando el navegador autocompleta un campo de entrada.
Las mejores opciones son o bien desactivar la función de autocompletar para un formulario utilizando `autocomplete="off"en su formulario o sondear a intervalos regulares para ver si se llena.
Para tu pregunta sobre si se rellena en o antes de document.ready, de nuevo varía de un navegador a otro e incluso de una versión a otra. En el caso de los campos nombre de usuario/contraseña, sólo se rellena el campo contraseña cuando se selecciona un nombre de usuario. Así que en conjunto usted tendría un código muy desordenado si intenta adjuntar a cualquier evento.
Puedes leer esto AQUI
Sé que este es un hilo viejo, pero me imagino que muchos viene a encontrar una solución a esto aquí.
Para ello, puede comprobar si la entrada (s) tiene valor (s) con:
$(function() {
setTimeout(function() {
if ($("#inputID").val().length > 0) {
// YOUR CODE
}
}, 100);
});
Yo mismo uso esto para comprobar si hay valores en mi formulario de inicio de sesión cuando se carga para habilitar el botón de envío. El código está hecho para jQuery pero es fácil de cambiar si es necesario.