He creado una aplicación web que utiliza un menú desplegable de tagbox. Esto funciona muy bien en todos los navegadores, excepto el navegador Chrome (Versión 21.0.1180.89).
A pesar de que tanto los input
campos Y el form
campo que tiene el autocomplete="off"
atributo, Chrome insiste en mostrar un historial desplegable de entradas anteriores para el campo, que está borrando la lista de etiquetas.
html
google-chrome
autocomplete
forms
Mr Fett
fuente
fuente
Respuestas:
ACTUALIZAR
Parece que ahora Chrome ignora los atributos
style="display: none;"
ostyle="visibility: hidden;
.Puedes cambiarlo a algo como:
En mi experiencia, Chrome solo completa automáticamente el primero
<input type="password">
y el anterior<input>
. Entonces agregué:En la parte superior de la
<form>
y el caso fue resuelto.fuente
display: none;
desaparecerá el elemento, nada sobre el autocompletado.Evite el autocompletado de nombre de usuario (o correo electrónico) y contraseña:
Evitar autocompletar un campo ( podría no funcionar ):
Explicación:
autocomplete
todavía funciona en un<input>
pese a tenerautocomplete="off"
, pero puede cambiaroff
a una cadena aleatoria, comonope
.Otras "soluciones" para deshabilitar el autocompletado de un campo (no es la forma correcta de hacerlo, pero funciona):
1)
HTML:
JS (carga):
o usando jQuery:
2)
HTML:
JS (carga):
o usando jQuery:
Para agregar más de un campo usando jQuery:
Trabaja en:
Chrome: 49+
Firefox: 44+
fuente
new-password
es una buena captura para cualquier entrada oculta que en realidad no es una contraseña, graciasautocomplete="nope"
realmente funcionó para mí, a menos que lo agregue a mis dos campos de formulario. Al igual que puedo tenerlo en cualquier campo y luego ese campo no se completará automáticamente, pero el otro campo todavía se completará automáticamente, pero tan pronto como lo coloque en ambos campos, ambos comenzarán a completarse nuevamente.Parece que Chrome ahora ignora a
autocomplete="off"
menos que esté en la<form autocomplete="off">
etiqueta.fuente
Enfoque moderno
Simplemente haga su entrada
readonly
y, en foco, retírela. Este es un enfoque muy simple y los navegadores no llenaránreadonly
entradas. Por lo tanto, este método es aceptado y nunca será sobrescrito por futuras actualizaciones del navegador.La siguiente parte es opcional. Diseñe su entrada en consecuencia para que no se vea como una
readonly
entrada.EJEMPLO DE TRABAJO
fuente
modern approach
. Menos del 1% de los usuarios en el mundo tienen Javascript desactivado. Honestamente, no vale la pena que alguien se acomode a una audiencia tan pequeña cuando la gran mayoría de los sitios web dependen de Javascript. He estado desarrollando sitios web durante mucho tiempo y el 100% de mis sitios usan Javascript y dependen en gran medida de él. Si los usuarios tienen Javascript desactivado, ese es su propio problema y elección, no el mío. No podrán visitar o usar al menos el 90% de los sitios web en línea con él desactivado ... Su voto negativo es completamente irrelevante.Para una solución alternativa confiable, puede agregar este código a su página de diseño:
Chrome respeta autocompletar = desactivado solo cuando hay al menos otro elemento de entrada en el formulario con cualquier otro valor de autocompletar.
Esto no funcionará con los campos de contraseña, que se manejan de manera muy diferente en Chrome. Consulte https://code.google.com/p/chromium/issues/detail?id=468153 para obtener más detalles.
ACTUALIZACIÓN: El equipo de Chromium cerró el error como "No se solucionará" el 11 de marzo de 2016. Vea el último comentario en mi informe de error presentado originalmente , para obtener una explicación completa. TL; DR: utilice atributos semánticos de autocompletado como autocomplete = "new-street-address" para evitar que Chrome realice el autocompletado.
fuente
Bueno, un poco tarde para la fiesta, pero parece que hay un pequeño malentendido sobre cómo
autocomplete
debería y no debería funcionar. De acuerdo con las especificaciones HTML, el agente de usuario (en este caso Chrome) puede anularautocomplete
:https://www.w3.org/TR/html5/forms.html#autofilling-form-controls:-the-autocomplete-attribute
Entonces, en el caso de Chrome, los desarrolladores esencialmente han dicho "dejaremos esto al usuario para que decida en sus preferencias si quiere
autocomplete
trabajar o no. Si no lo quiere, no lo habilite en su navegador" .Sin embargo, parece que esto es un poco entusiasta de su parte para mi gusto, pero es así. La especificación también analiza las posibles implicaciones de seguridad de tal movimiento:
Entonces, después de experimentar la misma frustración que todos los demás, encontré una solución que funciona para mí. Es similar en vena a las
autocomplete="false"
respuestas.Un artículo de Mozilla habla exactamente de este problema:
https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
Entonces, el siguiente código debería funcionar:
Y así debería cada uno de los siguientes:
El problema que veo es que el agente del navegador puede ser lo suficientemente inteligente como para aprender el
autocomplete
atributo y aplicarlo la próxima vez que vea el formulario. Si lo hace, la única forma en que puedo ver para solucionar el problema sería cambiar dinámicamente elautocomplete
valor del atributo cuando se genera la página.Un punto que vale la pena mencionar es que muchos navegadores ignorarán la
autocomplete
configuración de los campos de inicio de sesión (nombre de usuario y contraseña). Como dice el artículo de Mozilla:Finalmente, una pequeña información sobre si el atributo pertenece al
form
elemento o alinput
elemento. La especificación nuevamente tiene la respuesta:Entonces. Ponerlo en el formulario debe aplicarse a todos los campos de entrada. Ponerlo en un elemento individual debe aplicarse solo a ese elemento (incluso si no hay uno en el formulario). Si
autocomplete
no está configurado en absoluto, su valor predeterminado eson
.Resumen
Para deshabilitar
autocomplete
en todo el formulario:O si necesita hacerlo dinámicamente:
Para deshabilitar
autocomplete
en un elemento individual (independientemente de que la configuración del formulario esté presente o no)O si necesita hacerlo dinámicamente:
Y recuerde que ciertos agentes de usuario pueden anular incluso sus intentos más difíciles de deshabilitar
autocomplete
.fuente
La solución en este momento es usar
type="search"
. Google no aplica autocompletar a las entradas con un tipo de búsqueda.Ver: https://twitter.com/Paul_Kinlan/status/596613148985171968
Actualización 04/04/2016: ¡ Parece que esto está solucionado! Ver http://codereview.chromium.org/1473733008
fuente
Chrome versión 34 ahora ignora el
autocomplete=off
, mira esto .¿Mucha discusión sobre si esto es algo bueno o malo? ¿Cuál es tu opinión?
fuente
El navegador no se preocupa por autocompletar = apagado automático o incluso llena las credenciales en el campo de texto incorrecto?
Lo arreglé configurando el campo de contraseña en solo lectura y actívelo cuando el usuario hace clic en él o usa la tecla de tabulación para este campo.
arregle el autocompletado del navegador: solo lectura y establezca escritura en el foco (al hacer clic con el mouse y al pasar por los campos)
Actualización: Mobile Safari establece el cursor en el campo, pero no muestra el teclado virtual. New Fix funciona como antes pero maneja el teclado virtual:
Demostración en vivo https://jsfiddle.net/danielsuess/n0scguv6/
// UpdateEnd
Por cierto, más información sobre mi observación:
A veces noto este comportamiento extraño en Chrome y Safari, cuando hay campos de contraseña en la misma forma. Supongo que el navegador busca un campo de contraseña para insertar sus credenciales guardadas. Luego, llena automáticamente el nombre de usuario en el campo de entrada de texto similar más cercano, que aparece antes del campo de contraseña en DOM (solo adivinando por observación). Como el navegador es la última instancia y no puede controlarlo, a veces incluso autocompletar = apagado no evitaría completar las credenciales en campos incorrectos, pero no el campo de usuario o apodo.
fuente
Puedes usar
autocomplete="new-password"
Trabaja en:
fuente
TL; DR: dígale a Chrome que esta es una nueva entrada de contraseña y que no proporcionará las antiguas como sugerencias de autocompletar:
autocomplete="off"
no funciona debido a una decisión de diseño: mucha investigación muestra que los usuarios tienen contraseñas mucho más largas y difíciles si pueden almacenarlas en un navegador o administrador de contraseñas.La especificación de
autocomplete
ha cambiado y ahora admite varios valores para que los formularios de inicio de sesión sean fáciles de completar automáticamente:Si no proporciona estos, Chrome aún intenta adivinar, y cuando lo hace, lo ignora
autocomplete="off"
.La solución es que
autocomplete
también existen valores para los formularios de restablecimiento de contraseña:Puede usar esta
autocomplete="new-password"
bandera para decirle a Chrome que no adivine la contraseña, incluso si tiene una almacenada para este sitio.Chrome también puede administrar contraseñas para sitios directamente usando la API de credenciales , que es un estándar y que eventualmente tendrá soporte universal.
fuente
He resuelto la lucha interminable con Google Chrome con el uso de caracteres aleatorios. Cuando siempre renderiza autocompletar con una cadena aleatoria, nunca recordará nada.
Espero que ayude a otras personas.
fuente
Autocomplete="Off"
ya no funcionaIntente usar solo una cadena aleatoria en lugar de
"Off"
, por ejemploAutocomplete="NoAutocomplete"
Espero que ayude.
fuente
Visto que Chrome ignora
autocomplete="off"
, lo resuelvo de una manera estúpida que está usando "entrada falsa" para engañar a Chrome para llenarlo en lugar de llenar el "real".Ejemplo:
Chrome completará la "entrada falsa" y, cuando se envíe, el servidor tomará el valor de "entrada real".
fuente
Estoy publicando esta respuesta para traer una solución actualizada a este problema. Actualmente estoy usando Chrome 49 y ninguna respuesta dada funciona para este. También estoy buscando una solución que funcione con otros navegadores y versiones anteriores.
Pon este código al comienzo de tu formulario
Luego, para su campo de contraseña real, use
Comente esta respuesta si ya no funciona o si tiene un problema con otro navegador o versión.
Aprobado en:
fuente
para cualquiera que busque una solución a esto, finalmente lo descubro.
Chrome solo obedece el autocomplete = "off" si la página es HTML5 (estaba usando XHTML).
Convertí mi página a HTML5 y el problema desapareció (facepalm).
fuente
Cambie el atributo de tipo de entrada a
type="search"
.Google no aplica el autocompletado a las entradas con un tipo de búsqueda.
fuente
Hasta esta semana, las dos soluciones siguientes parecían funcionar para Chrome, IE y Firefox. Pero con el lanzamiento de Chrome versión 48 (y todavía en 49), ya no funcionan:
Lo siguiente en el elemento de entrada de contraseña:
autocompletar = "apagado"
Entonces, para solucionar esto rápidamente, al principio traté de usar un truco importante de configurar inicialmente el elemento de entrada de contraseña en deshabilitado y luego usé setTimeout en la función de documento listo para habilitarlo nuevamente.
Pero esto parecía tan loco e hice un poco más de búsqueda y encontré la respuesta de @tibalts en Desactivar el Autocompletado de Chrome . Su respuesta es usar autocomplete = "new-password" en la entrada de contraseñas y esto parece funcionar en todos los navegadores (he mantenido mi solución número 1 arriba en esta etapa).
Aquí está el enlace en la discusión del desarrollador de Google Chrome: https://code.google.com/p/chromium/issues/detail?id=370363#c7
fuente
autocomplete=off
se ignora en gran medida en los navegadores modernos, principalmente debido a los administradores de contraseñas, etc.Puede intentar agregar esto
autocomplete="new-password"
, no es totalmente compatible con todos los navegadores, pero funciona en algunosfuente
autocomplete="off"
Por lo general funciona, pero no siempre. Dependename
del campo de entrada. Los nombres como "dirección", "correo electrónico", "nombre" se completarán automáticamente (los navegadores creen que ayudan a los usuarios), cuando campos como "código", "pin" no se completarán automáticamente (siautocomplete="off"
está configurado)Mi problema fue que el autocompletado estaba jugando con el asistente de direcciones de Google
Lo arreglé renombrándolo
desde
a
Probado en cromo 71.
fuente
En lugar de autocompletar = "off", use autocomplete = "false" ;)
de: https://stackoverflow.com/a/29582380/75799
fuente
No tengo idea de por qué esto funcionó en mi caso, pero en Chrome utilicé
autocomplete="none"
y Chrome dejó de sugerir direcciones para mi campo de texto.fuente
A partir de Chrome 42, ninguna de las soluciones / hacks en este hilo (a partir de
2015-05-21T12:50:23+00:00
) funciona para deshabilitar el autocompletado para un campo individual o el formulario completo.EDITAR: descubrí que en realidad solo necesita insertar un campo de correo electrónico ficticio en su formulario (puede ocultarlo
display: none
) antes de los otros campos para evitar el autocompletado. Supongo que Chrome almacena algún tipo de firma de formulario con cada campo autocompletado e incluir otro campo de correo electrónico corrompe esta firma y evita el autocompletado.La buena noticia es que, dado que la "firma del formulario" está dañada por esto, ninguno de los campos se completa automáticamente, por lo que no se necesita JS para borrar los campos falsos antes del envío.
Vieja respuesta:
Lo único que he encontrado que sigue siendo viable es insertar dos campos ficticios de tipo correo electrónico y contraseña antes de los campos reales. Puede configurarlos
display: none
para ocultarlos (no es lo suficientemente inteligente como para ignorar esos campos):Desafortunadamente, los campos deben estar dentro de su formulario (de lo contrario, ambos conjuntos de entradas se rellenan automáticamente). Por lo tanto, para que los campos falsos se ignoren realmente, necesitará algunos JS para ejecutar en el envío del formulario para borrarlos:
Observe desde arriba que borrar el valor con Javascript funciona para anular el autocompletado. Entonces, si es aceptable perder el comportamiento adecuado con JS deshabilitado, puede simplificar todo esto con un "polyfill" de JS autocompletado para Chrome:
fuente
Tuve un problema similar en el que el campo de entrada tomó un nombre o un correo electrónico. Configuré autocomplete = "off" pero Chrome aún forzó sugerencias. Resulta que fue porque el texto del marcador de posición tenía las palabras "nombre" y "correo electrónico".
Por ejemplo
Lo evité poniendo un espacio de ancho cero en las palabras en el marcador de posición. No más Chrome autocompletar.
fuente
En Chrome 48+ usa esta solución:
Poner campos falsos antes que campos reales:
Ocultar campos falsos:
¡Lo hiciste!
También esto funcionará para versiones anteriores.
fuente
autocomplete="off"
en laform
etiqueta. También intente poner entradas falsas inmediatamente después de laform
etiqueta.Después del Chrome v. 34, la configuración
autocomplete="off"
en la<form>
etiqueta no funcionaHice los cambios para evitar este comportamiento molesto:
name
y elid
de la entrada de contraseñapasswordInput
)(Hasta ahora, Chrome no pondrá la contraseña guardada en la entrada, pero el formulario ahora está roto)
Finalmente, para que el formulario funcione, ponga este código en ejecución cuando el usuario haga clic en el botón de envío, o cuando desee activar el envío del formulario:
En mi caso, solía tener
id="password" name="password"
la entrada de contraseña, así que las puse antes de activar la submisión.fuente
Después de haber probado todas las soluciones, esto es lo que parece estar funcionando para la versión de Chrome: 45, con un formulario que tiene un campo de contraseña:
fuente
Acabo de actualizar a Chrome 49 y la solución de Diogo Cid ya no funciona.
Hice una solución diferente ocultando y eliminando los campos en tiempo de ejecución después de cargar la página.
Chrome ahora ignora la solución original que aplica las credenciales al primer campo mostrado
type="password"
y sutype="text"
campo anterior , por lo que he ocultado ambos campos usando CSSvisibility: hidden;
Sé que puede parecer no muy elegante, pero funciona.
fuente
Encontré que esta solución es la más adecuada:
Debe cargarse después de dom ready, o después de que se procese el formulario.
fuente
Si bien estoy de acuerdo con que la función de autocompletar debería ser una opción del usuario, hay ocasiones en que Chrome es demasiado entusiasta (otros navegadores también pueden serlo). Por ejemplo, un campo de contraseña con un nombre diferente todavía se llena automáticamente con una contraseña guardada y el campo anterior se completa con el nombre de usuario. Esto apesta particularmente cuando el formulario es un formulario de administración de usuarios para una aplicación web y no desea que el autocompletado lo complete con sus propias credenciales.
Chrome ignora completamente autocompletar = "off" ahora. Si bien los hacks JS pueden funcionar, encontré una forma simple que funciona al momento de escribir:
Establezca el valor del campo de contraseña en el carácter de control 8 (
"\x08"
en PHP o
en HTML). Esto impide que Chrome complete automáticamente el campo porque tiene un valor, pero no se ingresa ningún valor real porque este es el carácter de retroceso.Sí, esto sigue siendo un truco, pero funciona para mí. YMMV.
fuente
form
para crear y editar usuarios nuevos, simplemente anulando losinput
valores a través de JS eliminé el autocompletado.