Tengo 2 formularios básicos: iniciar sesión y suscribirse, ambos en la misma página. Ahora, no tengo ningún problema con el formulario de inicio de sesión de llenado automático,pero el formulario de registro también se completa automáticamente, y no me gusta.
Además, los estilos de formulario tienen un fondo amarillo que no puedo anular y no quiero usar CSS en línea para hacerlo. ¿Qué puedo hacer para que dejen de ser de color amarillo?y (posiblemente) llenado automático? ¡Gracias por adelantado!
Respuestas:
para el autocompletado, puede usar:
con respecto al problema de coloración:
De su captura de pantalla puedo ver que webkit genera el siguiente estilo:
1) como # id-styles son aún más importantes que los estilos .class, lo siguiente puede funcionar:
2) si eso no funciona, puede intentar configurar el estilo a través de JavaScript mediante programación
3) si eso no funciona,
estás condenado :-)considera esto: esto no ocultará el color amarillo, pero hará que el texto sea legible nuevamente.4) una solución css / javascript:
css:
y el siguiente javascript debe ejecutarse al cargar:
p.ej:
buena suerte :-)
5) Si ninguno de los trabajos anteriores intenta eliminar los elementos de entrada, clonarlos y luego volver a colocar los elementos clonados en la página (funciona en Safari 6.0.3):
6) Desde aquí :
fuente
code
var keepTheInputCloned = setInterval(function(){ var e = document.getElementById('id_email'); var ep = e.parentNode; ep.removeChild(e); var e2 = e.cloneNode(); ep.appendChild(e2); var p = document.getElementById('id_password'); var pp = p.parentNode; pp.removeChild(p); var p2 = p.cloneNode(); pp.appendChild(p2); },50); setTimeout(function(){clearInterval(keepTheInputCloned)},1000);
Truco con una sombra interior "fuerte":
fuente
Agregue esta regla CSS y desaparecerá el color de fondo amarillo. :)
fuente
Casi todos los navegadores modernos lo respetarán.
fuente
autocomplete
es que no es válido en HTML antes de la versión 5.Después de 2 horas de búsqueda, parece que Google Chrome todavía anula el color amarillo de alguna manera, pero encontré la solución. Funcionará también para planear, enfocar, etc. Todo lo que tienes que hacer es agregarlo
!important
.esto eliminará por completo el color amarillo de los campos de entrada
fuente
También puede cambiar el atributo de nombre de los elementos de su formulario para que sea algo generado de modo que el navegador no lo rastree. SIN EMBARGO, firefox 2.x + y google chrome parecen no tener muchos problemas con eso si la url de solicitud es idéntica. Básicamente, intente agregar un parámetro de solicitud de sal y un nombre de campo de sal para el formulario de registro.
Sin embargo, creo que autocomplete = "off" sigue siendo la mejor solución :)
fuente
Puede deshabilitar la finalización automática a partir de HTML5 (vía
autocomplete="off"
), pero NO PUEDE anular el resaltado del navegador. Podría intentar jugar con::selection
CSS (la mayoría de los navegadores requieren un prefijo de proveedor para que funcione), pero eso probablemente tampoco lo ayudará.A menos que el proveedor del navegador implemente específicamente una forma específica de proveedor de anularlo, no puede hacer nada con respecto a dichos estilos que ya pretenden anular la hoja de estilo del sitio para el usuario. Por lo general, se aplican después de aplicar las hojas de estilo e ignoran las
! important
anulaciones.fuente
A veces, el autocompletado en el navegador todavía se autocompleta cuando solo tiene el código en el
<form>
elemento.Traté de ponerlo en el
<input>
elemento también y funcionó mejor.Sin embargo, el soporte para este atributo está cesando, lea https://bugzilla.mozilla.org/show_bug.cgi?id=956906#c1
https://bugzilla.mozilla.org/show_bug.cgi?id=956906
Otra solución que he encontrado es eliminar marcadores de posición dentro de los campos de entrada que sugieren que es un campo de correo electrónico, nombre de usuario o teléfono (es decir, "Su correo electrónico", "Correo electrónico", etc. ")
Esto hace que los navegadores no sepan qué tipo de campo es, por lo que no intenta autocompletarlo.
fuente
Si está en el campo de entrada, está intentando "no amarillo" ...
Entonces, podría verse así:
fuente
Esto soluciona el problema tanto en Safari como en Chrome.
fuente
La captura de pantalla a la que se vinculó dice que WebKit está utilizando el selector
input:-webkit-autofill
para esos elementos. ¿Has intentado poner esto en tu CSS?Si eso no funciona, entonces probablemente nada lo hará. Esos campos se resaltan para alertar al usuario de que se han llenado automáticamente con información privada (como la dirección particular del usuario) y se podría argumentar que permitir que se oculte una página es un riesgo para la seguridad.
fuente
El
form
elemento tiene unautocomplete
atributo que puede establecer enoff
. A partir del CSS, la!important
directiva después de una propiedad evita que se anule:Solo IE6 no lo entiende.
Si te entendí mal, también está la
outline
propiedad que podrías encontrar útil.fuente
!important
directiva, en cuyo caso tiene prioridad sobre todo lo demás. Debería consultar la hoja de estilo de su agente de usuario (aunque no sé dónde encontrarla).He visto la función de autocompletar de la barra de herramientas de Google deshabilitada con javascript. Podría funcionar con algunas otras herramientas de autocompletar; No sé si ayudará con los navegadores integrados en autocompletar.
fuente
Después de probar muchas cosas, encontré soluciones de trabajo que destruyeron los campos autocompletados y los reemplacé por duplicados. Para no perder eventos adjuntos, se me ocurrió otra solución (un poco larga).
En cada evento de "entrada", adjunta rápidamente eventos de "cambio" a todas las entradas involucradas. Prueba si se han llenado automáticamente. En caso afirmativo, envíe un nuevo evento de texto que engañará al navegador para que piense que el valor ha sido cambiado por el usuario, permitiendo así eliminar el fondo amarillo.
fuente
Solución javascript simple para todos los navegadores:
Clonar entrada, restablecer atributo y ocultar entrada original. Se necesita tiempo de espera para iPad
fuente
Como el navegador busca campos de tipo de contraseña, otra solución es incluir un campo oculto al comienzo de su formulario:
fuente
He leído tantos hilos e intento tantos códigos. Después de reunir todo eso, la única forma en que encontré vaciar limpiamente los campos de inicio de sesión y contraseña y restablecer su fondo a blanco fue la siguiente:
Siéntase libre de comentar, estoy abierto a todas las mejoras si encuentra alguna.
fuente
Autocompletar desactivado no es compatible con los navegadores modernos. La forma más fácil de resolver el autocompletado que encontré fue una pequeña pista con HTML y JS. Lo primero que debe hacer es cambiar el tipo de entrada en HTML de 'contraseña' a 'texto'.
El autocompletado comienza después de cargar la ventana. Está bien. Pero cuando el tipo de su campo no es 'contraseña', el navegador no sabía qué campos debía completar. Por lo tanto, no habrá autocompletado en los campos del formulario.
Después de eso, enlace el evento focusin al campo de contraseña, por ej. en Backbone:
En
onInputPasswordFocusIn
, simplemente cambie el tipo de su campo a contraseña, con una simple verificación:Eso es todo!
UPD: esto no funciona con JavaSciprt deshabilitado
UPD en 2018. También encontré algún truco divertido. Establezca el atributo de solo lectura en el campo de entrada y elimínelo en el evento de enfoque. Primero evite que el navegador complete automáticamente los campos, segundo permitirá ingresar datos.
fuente
autocomplete=off
, ya que funciona en FF, Chrome por un tiempo e IE a partir de la versión anterior más o menosIntente con autocomplete = "none" en su etiqueta de entrada
Esto funciona para mi
fuente
También tuve que cambiar el color del texto a algo más oscuro (vea los colores oscuros del tema StackOverflow).
Así que terminé con un híbrido de @ Tamás Pap, @MCBL y la solución de @ don:
fuente
¿Por qué no simplemente poner esto en su CSS?
Eso debería encargarse de su problema. Aunque plantea un problema de usabilidad porque ahora el usuario no puede ver que el formulario se completó automáticamente de la forma en que está acostumbrado.
[editar] Después de publicar esto, vi que ya se había dado una respuesta similar y que comentaste que no funcionó. No entiendo por qué porque funcionó cuando lo probé.
fuente
input:-webkit-autofill
yinput --webkit-autocomplete
simplemente no existeEl problema REAL aquí es que Webkit (Safari, Chrome, ...) tiene un error. Cuando hay más de un [formulario] en la página, cada uno con un [input type = "text" name = "foo" ...] (es decir, con el mismo valor para el atributo 'name'), entonces cuando el usuario regresa a la página, el autocompletado se realizará en el campo de entrada del PRIMER [formulario] en la página, no en el [formulario] que se envió. La segunda vez, el NEXT [formulario] se completará automáticamente, y así sucesivamente. Solo se verá afectado [formulario] con un campo de texto de entrada con el MISMO nombre.
Esto debe informarse a los desarrolladores de Webkit.
Opera rellena automáticamente el [formulario] correcto.
Firefox e IE no se llena automáticamente.
Entonces, digo nuevamente: este es un error en Webkit.
fuente