Desactivar autocompletar a través de CSS


¿Es posible usar CSS para deshabilitar el autocompletado en un elemento de formulario (específicamente un campo de texto)?

Utilizo una biblioteca de etiquetas que no permite el elemento autocompletar y me gustaría desactivar autocompletar sin usar Javascript.

Author: Wex, 2010-02-02

8 answers

Puede usar un id y name generado cada vez, que es diferente, por lo que el navegador no puede recordar este campo de texto y no sugerirá algunos valores.

Esta es al menos la alternativa segura para el navegador cruzado, pero recomendaría ir con la respuesta de RobertsonM (autocomplete="off").

 36
Author: codevour,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-22 11:44:24

Tal como está, no hay ningún atributo 'autocomplete off' en CSS. Sin embargo, html tiene un código fácil para esto:

<input type="text" id="foo" value="bar" autocomplete="off" />

Si está buscando un efector para todo el sitio, uno fácil sería simplemente tener una función js para correr a través de todos los 'input' s y agregar esta etiqueta, o buscar la clase / id css correspondiente.

El atributo autocompletar funciona bien en Chrome y Firefox (!), pero vea también ¿Hay una forma válida de W3C para deshabilitar el autocompletado en un formulario HTML?

 111
Author: RobertsonM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:31:20

Se puede implementar fácilmente mediante jQuery

$('input').attr('autocomplete','off');
 45
Author: ahhmarr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-28 04:24:25

Si estás usando un form puedes desactivar todos los autocompletos con,

<form id="Form1" runat="server" autocomplete="off">
 14
Author: Ernest,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-22 22:10:34

CSS no tiene esta habilidad. Tendría que usar scripts del lado del cliente.

 12
Author: Sampson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-02 17:45:59

Probé todas las formas sugeridas de las respuestas a esta pregunta y otros artículos en la web, pero no funcionó de todos modos. Probé autocomplete= "new-random-value", autocomplete=" off " en el elemento de formulario, usando el script del lado del cliente como se muestra a continuación, pero fuera de $(documento).ready () como uno de los usuarios mencionó:

$(':input').on('focus', function () {
  $(this).attr('autocomplete', 'off')
});

He encontrado tal vez otra prioridad en el navegador causa este comportamiento extraño! Así que busqué más y finalmente, volví a leer cuidadosamente debajo de las líneas de este buen artículo :

Por esta razón, muchos navegadores modernos no admiten autocomplete = " off " para campos de inicio de sesión:

Si un sitio establece autocomplete = " off " para a, y el formulario incluye nombre de usuario y contraseña campos de entrada, entonces el navegador seguirá ofreciendo para recordar este login, y si el usuario está de acuerdo, el navegador rellene automáticamente esos campos la próxima vez que el usuario visite la página. Si a el sitio establece autocomplete = " off " para los campos de nombre de usuario y contraseña, entonces el navegador seguirá ofreciendo recordar este login, y si el el usuario acepta, el navegador autocompletará esos campos la próxima vez que el usuario visita la página. Este es el comportamiento en Firefox (desde la versión 38), Google Chrome (desde 34) e Internet Explorer (desde la versión 11).

Si está definiendo una página de administración de usuarios donde un usuario puede especificar una nueva contraseña para otra persona, y por lo tanto desea evitar llenado automático de campos de contraseña, puede usar autocomplete = "nueva contraseña"; sin embargo, el soporte para este valor no se ha implementado en Firefox.

Simplemente funcionó. Probé en Chrome especialmente y espero que esto siga funcionando y ayudar a los demás.

 3
Author: QMaster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-22 11:24:03

Gracias a la solución de@ahhmarr pude resolver el mismo problema en mi entorno Angular+ui-router, que compartiré aquí para quien esté interesado.

En mi index.html he añadido el siguiente script:

<script type="text/javascript">
    setTimeout(function() {
        $('input').attr('autocomplete', 'off');
    }, 2000);
</script>

Luego, para cubrir los cambios de estado, he agregado lo siguiente en mi controlador raíz:

$rootScope.$on('$stateChangeStart', function() {
                $timeout(function () {
                    $('input').attr('autocomplete', 'off');
                }, 2000);
            });

Los tiempos de espera son para que el html se muestre antes de aplicar jquery.

Si encuentra una solución mejor, hágamelo saber.

 1
Author: TrampGuy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:09:56
$('input').attr('autocomplete','off');
 -3
Author: rohit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-28 10:07:43