Como você desativar navegador Autocomplete no formulário web tag campo / entrada?

votos
2k

Como você desativar autocompletenos principais navegadores para uma específica input(ou form field)?

Publicado 05/08/2008 em 17:22
fonte usuário
Em outras línguas...                            


63 respostas

votos
2k

Firefox 30 ignora autocomplete="off"para senhas, optando para solicitar ao usuário, em vez se a senha deve ser armazenado no cliente. Observe o seguinte comentário de 05 de maio de 2014:

  • O gerenciador de senhas sempre pergunta se ele quer salvar uma senha. As senhas não são salvos sem a permissão do usuário.
  • Somos o terceiro navegador para implementar esta mudança, depois de IE e Chrome.

De acordo com a Mozilla documentação do desenvolvedor o atributo de elemento de formulário autocompleteimpede dados do formulário de ser armazenado em cache em navegadores mais antigos.

<input type="text" name="foo" autocomplete="off" />
Respondeu 05/08/2008 em 17:24
fonte usuário

votos
237

Além autocomplete=off, você também pode ter seus nomes campos de formulário ser randomizados pelo código que gera a página, talvez adicionando uma string específica a uma sessão ao final dos nomes.

Quando o formulário é enviado, você pode retirar essa parte antes de processá-los no lado do servidor. Isso impediria o navegador web de encontrar contexto para o seu campo e também pode ajudar a prevenir ataques XSRF porque um invasor não seria capaz de adivinhar os nomes dos campos para um envio do formulário.

Respondeu 20/10/2008 em 14:36
fonte usuário

votos
181

A maioria dos principais navegadores e gerenciadores de senha (corretamente, IMHO) agora ignorar autocomplete=off.

Por quê? Muitos bancos e outros sites de "alta segurança", acrescentou autocomplete=offa suas páginas de login "para fins de segurança", mas isso realmente diminui a segurança, uma vez que leva as pessoas a alterar as senhas sobre esses sites de alta segurança para ser fácil de lembrar (e, portanto, crack) desde autocomplete estava quebrado.

Há muito tempo, a maioria dos gerentes de senha começou ignorando autocomplete=off, e agora os navegadores estão começando a fazer o mesmo para apenas entradas de nome de usuário / senha.

Infelizmente, erros nas implementações de preenchimento automático inserir nome de usuário e / ou informações senha no formulário inadequados campos, causando erros de validação de formulário, ou pior ainda, acidentalmente inserir nomes de usuário em campos que foram intencionalmente deixada em branco pelo usuário.

O que é um desenvolvedor web para fazer?

  • Se você pode manter todos os campos de senha em uma página por si só, que é um grande começo como parece que a presença de um campo de senha é o principal gatilho para o usuário / pass autocomplete para chutar. Caso contrário, leia as dicas abaixo.
  • Safari percebe que existem 2 campos de senha e desativa autocomplete neste caso, supondo que ele deve ser um formulário de alteração de senha, não um formulário de login. Então, só não se esqueça de usar 2 campos de senha (nova e confirme novo) para todas as formas em que você permite
  • Chrome 34, infelizmente, vai tentar preencher automaticamente os campos com usuário / passar sempre que vê um campo de senha. Este é completamente um bug ruim que, esperamos, eles vão mudar o comportamento Safari. No entanto, adicionando isso ao topo da sua forma parece desativar o preenchimento automático de senha:

    <input type="text" style="display:none">
    <input type="password" style="display:none">
    

Eu ainda não investigou IE ou Firefox completamente, mas será feliz para atualizar a resposta se os outros têm informações nos comentários.

Respondeu 23/04/2014 em 05:00
fonte usuário

votos
116

Às vezes até mesmo autocomplete = off que não impede a preencher em credenciais em campos errados, mas não campo de usuário ou apelido.

Esta solução é, além de pós de apinstein sobre o comportamento do navegador.

navegador autofill correção em somente leitura e definir gravável no foco (clique e guia)

 <input type="password" readonly  
     onfocus="this.removeAttribute('readonly');"/>

Update: Mobile Safari define cursor no campo, mas não mostra o teclado virtual. New Fix funciona como antes, mas lida com teclado virtual:

<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
    this.removeAttribute('readonly');
    // fix for mobile safari to show virtual keyboard
    this.blur();    this.focus();  }" />

Live Demo https://jsfiddle.net/danielsuess/n0scguv6/

// UpdateEnd

Porque auto Navegador enche credenciais ao campo de texto errado !?

I perceber esse comportamento estranho no Chrome e Safari, quando há campos de senha na mesma forma. Eu acho que, o navegador procura por um campo de senha para inserir suas credenciais salvas. Em seguida, ele auto preenchimentos (apenas adivinhando devido à observação) o campo mais próximo textlike-entrada, que aparece antes o campo de senha em DOM. Como o navegador é a última instância e você não pode controlá-lo,

Este readonly-correção acima funcionou para mim.

Respondeu 16/06/2014 em 17:04
fonte usuário

votos
94
<form name="form1" id="form1" method="post" 
      autocomplete="off" action="http://www.example.com/form.cgi">

Isto irá funcionar no Internet Explorer e Mozilla FireFox, a desvantagem é que não é padrão XHTML.

Respondeu 05/08/2008 em 17:27
fonte usuário

votos
54

Como já foi dito, a resposta é autocomplete="off"

No entanto, penso que vale a pena afirmando por isso que é uma boa idéia usar isso em certos casos, como algumas respostas para essa e duplicar perguntas sugeriram que é melhor não para desligá-lo.

Parando navegadores armazenar números de cartão de crédito não deve ser deixada para os usuários. Muitos usuários nem vai perceber que é um problema.

É particularmente importante para desligá-lo em campos para códigos de segurança do cartão de crédito. Como esta página estados:

"Nunca guarde o código de segurança ... o seu valor depende do pressuposto de que a única maneira de fornecê-lo é lê-la a partir do cartão de crédito físico, provando que a pessoa que entrega-lo realmente detém o cartão."

O problema é, se é um computador público (cyber café, biblioteca etc) é então fácil para outros usuários para roubar dados do seu cartão, e até mesmo em sua própria máquina um site malicioso poderia roubar dados de preenchimento automático .

Respondeu 23/01/2009 em 22:21
fonte usuário

votos
50

A solução para o Chrome é adicionar autocomplete="new-password"à senha tipo de entrada.

Exemplo:

<form name="myForm"" method="post">
<input name="user" type="text" />
<input name="pass" type="password" autocomplete="new-password" />
<input type="submit">
</form>

Chrome sempre autocomplete os dados se encontra uma caixa de senha tipo , apenas o suficiente para indicar para essa caixa autocomplete = "new-password".

Isto funciona bem para mim.

Nota: certifique-se com o F12 que as alterações entrem em vigor, muitas vezes navegadores salvar a página em cache, isso me deu uma má impressão de que ele não funcionou, mas o navegador não chegou a trazer as mudanças.

Respondeu 24/11/2016 em 17:07
fonte usuário

votos
29

Eu tenho que discordar com essas respostas que dizem para evitar a desativação de auto-completar.

A primeira coisa a trazer é que auto-completar não ser desativada explicitamente sobre os campos do formulário de login é uma PCI-DSS falhar. Além disso, se a máquina local, um dos usuários é comprometida, em seguida, todos os dados de preenchimento automático pode ser trivialmente obtida por um atacante devido a ele ser armazenado em claro.

Há certamente um argumento para a usabilidade, no entanto há um muito bom equilíbrio quando se trata de que os campos do formulário devem ter desativado autocomplete e que não deveria.

Respondeu 17/09/2011 em 01:33
fonte usuário

votos
24

Três opções: Primeiro:

<input type='text' autocomplete='off' />

Segundo:

<form action='' autocomplete='off'>

Terceiro (código javascript):

$('input').attr('autocomplete', 'off');
Respondeu 19/03/2013 em 11:05
fonte usuário

votos
18

Eu tenho tentado soluções infinitas, e então eu encontrei isto:

Em vez de autocomplete="off"simplesmente usarautocomplete="false"

Tão simples como isso, e ele funciona como um encanto no Google Chrome também!

Respondeu 01/05/2015 em 05:56
fonte usuário

votos
17

Basta definir autocomplete="off". Há uma boa razão para fazer isso: Você quer fornecer sua própria funcionalidade autocomplete!

Respondeu 05/08/2008 em 17:32
fonte usuário

votos
16

Nenhuma das soluções trabalhou para mim nesta conversa.

Eu finalmente descobri uma solução HTML puro que requer nenhum Javascript , funciona em navegadores modernos (exceto IE, não tinha a pelo menos 1 captura, certo?), E não requer que você desabilite autocomplete para todo o formulário.

Simplesmente desligue autocomplete no forme, em seguida, transformá-lo para qualquer inputque você deseja que ele funcione dentro do formulário. Por exemplo:

<form autocomplete="off">
    <!-- these inputs will not allow autocomplete and chrome 
         won't highlight them yellow! -->
    <input name="username"  />
    <input name="password" type="password" />
    <!-- this field will allow autocomplete to work even 
         though we've disabled it on the form -->
    <input name="another_field" autocomplete="on" />
</form>
Respondeu 15/08/2013 em 20:02
fonte usuário

votos
16

Eu acho que autocomplete=offé suportado em HTML 5.

Perguntar por que você quer fazer isso embora - pode fazer sentido em algumas situações, mas não fazê-lo apenas por uma questão de fazê-lo.

É menos conveniente para os usuários e nem mesmo um problema de segurança no OS X (mencionado por Soren abaixo). Se você está preocupado com as pessoas tendo suas senhas roubadas remotamente - um keystroke logger ainda pode fazê-lo mesmo que seu aplicativo usa autcomplete=off.

Como um usuário que opta por ter me lembro de um navegador (mais de) minhas informações, eu encontrá-lo chato se o seu site não se lembrava meu.

Respondeu 24/02/2011 em 00:24
fonte usuário

votos
16

Nós fez realmente usar sasb ideia 's para um site. Foi um web app software médico para executar um consultório médico. No entanto, muitos de nossos clientes eram cirurgiões que usaram lotes de diferentes estações de trabalho, incluindo os terminais semi-públicos. Então, eles queriam ter certeza de que um médico que não entende a implicação de senhas gravadas automaticamente ou não está prestando atenção não pode acidentalmente deixar a sua informação de login facilmente acessível. Claro, isso foi antes de a idéia de navegação privada que está começando a ser destaque no IE8, FF3.1, etc. Mesmo assim, muitos médicos são forçados a usar navegadores da velha escola em hospitais com ele que não vai mudar.

Então, tivemos a página de login gerar nomes de campos aleatórios que só iria trabalhar para esse post. Sim, é menos conveniente, mas está apenas acertando o usuário sobre a cabeça sobre não armazenar informações de login em terminais públicos.

Respondeu 16/09/2008 em 16:35
fonte usuário

votos
16

Em um relacionado ou, na verdade, sobre a nota completamente oposto -

"Se você é o usuário da forma acima mencionada e quer re-habilitar a funcionalidade autocomplete, usar o bookmarklet 'lembrar senha' a partir desta página bookmarklets . Ele remove todos os autocomplete="off"atributos de todas as formas na página. Continuar lutando o bom combate! "

Respondeu 08/09/2008 em 20:29
fonte usuário

votos
13

Era uma forma não-padrão para fazer isso (eu acho Mozilla e Internet Explorer ainda apoiá-lo), mas mexer com as expectativas de usuários é uma má idéia.

alguém Se o usuário digitar suas informações de cartão de crédito em um formulário e, em seguida, vamos então usar esse navegador não é sua preocupação. :)

Respondeu 05/08/2008 em 17:26
fonte usuário

votos
10

adicionando o

autocomplete="off"

para a marca de formulário irá desativar o autocomplete navegador (o que foi previamente digitados nesse campo) de todos os inputcampos dentro desse formulário particular.

Testado em:

  • Firefox 3,5, 4 BETA
  • Internet Explorer 8
  • cromada
Respondeu 11/02/2011 em 06:14
fonte usuário

votos
9

Adicionando autocomplete="off"não vai cortá-la.

Alterar o tipo de entrada de atributo para type="search".
O Google não se aplicam auto-preenchimento para entradas com um tipo de pesquisa.

Respondeu 28/10/2015 em 16:32
fonte usuário

votos
9

A fim de evitar o XHTML inválido você pode definir esse atributo usando javascript. Exemplo usando jQuery:

<input type="text" class="noAutoComplete" ... />

$(function() {
    $('.noAutoComplete').attr('autocomplete', 'off');
});

O problema é que os usuários sem javascript fará obter a funcionalidade autocomplete.

Respondeu 12/12/2010 em 19:34
fonte usuário

votos
8

Eu não posso acreditar que isso ainda é um problema tanto tempo depois de ter sido relatado. As soluções acima não funcionou para mim, como safari parecia saber quando o elemento não foi apresentado ou fora da tela, no entanto, a seguinte fez trabalhos para mim:

<div style="height:0px; overflow:hidden; ">
  Username <input type="text" name="fake_safari_username" >
  Password <input type="password" name="fake_safari_password">
</div>

Espero que isso seja útil para alguém!

Respondeu 23/04/2016 em 11:02
fonte usuário

votos
8

Um pouco tarde para o jogo ... mas eu só corri para este problema e tentou várias falhas, mas este funciona para mim encontrado na MDN

Em alguns casos, o navegador irá manter sugerindo valores de completação automática, mesmo se o atributo autocomplete está definido para fora. Este comportamento inesperado pode ser bastante intrigante para os desenvolvedores. O truque para realmente forçar a não-conclusão é a de atribuir uma seqüência aleatória para o atributo como assim:

autocomplete="nope"
Respondeu 22/03/2016 em 19:38
fonte usuário

votos
8

Este é um problema de segurança que os navegadores ignorar agora. Browsers identificar e conteúdo lojas usando nomes de entrada, mesmo se os desenvolvedores considerar a informação é sensível e não deve ser armazenado. Fazendo um nome de entrada diferente entre 2 pedidos vai resolver o problema (mas ainda será salva no cache do navegador e também irá aumentar o cache do navegador). Peça ao utilizador para activar ou desactivar opções nas configurações do seu navegador não é uma boa solução. O problema pode ser corrigido no backend.

Aqui está a minha correção. Uma abordagem que eu implementei na minha estrutura. Todos os elementos de preenchimento automático são gerados com uma entrada escondida assim:

<? $r = rmd5(rand().mocrotime(TRUE)); ?>
<form method="POST" action="./">
    <input type="text" name="<? echo $r; ?>" />
    <input type="hidden" name="__autocomplete_fix_<? echo $r; ?>" value="username" />
    <input type="submit" name="submit" value="submit" />
</form>

Servidor então variáveis ​​pós processo como este:

foreach ($_POST as $key => $val)
{
    if(preg_match('#^__autocomplete_fix_#', $key) === 1){
        $n = substr($key, 19);
        if(isset($_POST[$n]))$_POST[$val] = $_POST[$n];
    }
}

O valor pode ser acessado como de costume

var_dump($_POST['username']);

E o navegador não será capaz de sugerir informações do pedido anterior ou dos usuários anteriores.

Todos funciona como um encanto, mesmo se as atualizações de navegadores, quer ignorar autocomplete ou não. Essa tem sido a melhor maneira de corrigir o problema para mim.

Respondeu 02/06/2015 em 20:37
fonte usuário

votos
8

tente estes também se simplesmente autocomplete="off"não funciona:

autocorrect="off" autocapitalize="off" autocomplete="off"
Respondeu 04/12/2012 em 19:24
fonte usuário

votos
8

Use um nome e ID de não-padrão para os campos, então ao invés de "nome" tem "name_". Navegadores, então, não vai vê-lo como sendo o campo de nome. A melhor parte sobre ele é que você pode fazer isso para alguns, mas não todos os campos e vai autocomplete alguns, mas não todos os campos.

Respondeu 05/08/2008 em 17:27
fonte usuário

votos
7

Nenhum dos hacks mencionados aqui funcionou para mim no Chrome. Há uma discussão sobre o assunto aqui: https://code.google.com/p/chromium/issues/detail?id=468153#c41

Adicionando este dentro de uma <form>obra (pelo menos por agora):

<div style="display: none;">
    <input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>
Respondeu 02/07/2015 em 10:40
fonte usuário

votos
6

A melhor solução:

Prevenir nome de usuário autocomplete (ou e-mail) e senha:

<input type="email" name="email"><!-- Can be type="text" -->
<input type="password" name="password" autocomplete="new-password">

Impedir autocomplete um campo:

<input type="text" name="field" autocomplete="nope">

Explicação: autocompletecontinua o trabalho em <input>, autocomplete="off"não funciona, mas você pode mudar offpara uma seqüência aleatória, como nope.

Trabalha em:

  • Cromo: 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 e 64

  • Firefox: 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 e 58

Respondeu 20/03/2018 em 04:31
fonte usuário

votos
6

Tente adicionar

onfocus somente de leitura = "this.removeAttribute ( 'somente de leitura');"

além de

autocomplete = "off"

à entrada (s) que você não quer lembrar os dados do formulário ( username, password, etc.) como mostrado abaixo:

<input type="text" name="UserName" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

<input type="password" name="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

Testado nas versões mais recentes dos principais navegadores, ou seja Google Chrome, Mozilla Firefox, Microsoft Edge, etc. e trabalhar sem qualquer problema. Espero que isto ajude...

Respondeu 01/11/2017 em 13:26
fonte usuário

votos
6

Isso funciona para mim.

<input name="pass" type="password" autocomplete="new-password" />

Podemos também usar esta estratégia em outros controles como texto, selecione etc

Respondeu 30/12/2016 em 15:05
fonte usuário

votos
5

Então aqui está ele:

function turnOnPasswordStyle() {
  $('#inputpassword').attr('type', "password");
}
<input oninput="turnOnPasswordStyle()" id="inputpassword" type="text">

Respondeu 29/05/2016 em 19:57
fonte usuário

votos
5

Você pode usar em entrada.

Por exemplo;

<input type=text name="test" autocomplete="off" />
Respondeu 02/11/2012 em 18:00
fonte usuário

votos
4

Você pode simplesmente colocar o autocomplete="off"nos campos HTML como o seguinte código.

<input type="text" name="" value="" autocomplete="off" />
Respondeu 12/05/2016 em 10:53
fonte usuário

votos
4

Você pode desativar o preenchimento automático se você remover a formtag, o mesmo foi feito por meu banco e eu queria saber como eles fizeram isso. Ele ainda remover o valor que já foi lembrado pelo navegador depois de remover a tag.

Respondeu 25/02/2016 em 15:27
fonte usuário

votos
4

Chrome está planejando para apoiar esta .

Por agora, a melhor sugestão é usar um tipo de entrada que raramente é completada automaticamente.

discussão cromo

<input type='search' name="whatever" />

para ser compatível com o Firefox, use autocomplete normais = 'off'

<input type='search' name="whatever" autocomplete='off' />
Respondeu 10/12/2015 em 02:21
fonte usuário

votos
3

Muitos navegadores modernos não suportam autocomplete = "off" para campos de login mais. autocomplete="new-password"é wokring vez, mais informação docs MDN

Respondeu 21/12/2017 em 04:33
fonte usuário

votos
3

Eu uso isso TextMode="password" autocomplete="new-password"e no carregamento da página em aspxtxtPassword.Attributes.Add("value", '');

Respondeu 14/03/2017 em 09:35
fonte usuário

votos
3

Meu problema foi principalmente preenchimento automático com o Chrome, mas acho que isso é provavelmente mais problemática do que autocomplete.

Trick: utilizando um temporizador para repor formulário e definir campos de senha em branco. A duração 100ms parece ser o mínimo para que ele funcione.

$(document).ready(function() {
    setTimeout(function() {
        var $form = $('#formId');
        $form[0].reset();
        $form.find('INPUT[type=password]').val('');
    }, 100);
});
Respondeu 12/07/2016 em 15:29
fonte usuário

votos
3

A resposta dsuess postado com o somente leitura era muito inteligente e funcionou. Mas como eu estou usando boostrap, o campo de entrada somente leitura foi - até focado - marcado com fundo cinzento. Enquanto o documento carrega, você pode enganar o navegador simplesmente bloquear e desbloquear a entrada.

Então eu tive uma idéia para implementar isso em solução jQuery:

    jQuery(document).ready(function () {
        $("input").attr('readonly', true);
        $("input").removeAttr('readonly');
   });
Respondeu 16/06/2016 em 10:43
fonte usuário

votos
3

Se o problema é ter um campo de senha ser concluída automaticamente, então você pode encontrar este útil ...

Tivemos esta questão em várias áreas do nosso site onde a empresa queria voltar a consultar o usuário para o seu nome de usuário e senha e, especificamente, não queria que o preenchimento automático de senha para trabalhar por razões contratuais. Descobrimos que a maneira mais fácil de fazer isso é colocar em um campo de senha falsa para o navegador para localizar e preencher enquanto o campo de senha real permanece intocado.

<!-- This is a fake password input to defeat the browser's autofill behavior -->
<input type="password" id="txtPassword" style="display:none;" />
<!-- This is the real password input -->
<input type="password" id="txtThisIsTheRealPassword" />

Note-se que no Firefox e IE, era simplesmente o suficiente para colocar qualquer entrada de senha tipo antes de o real, mas Chrome viu por isso e obrigou-me a verdade nomear a entrada de senha falsa (dando-lhe um id senha óbvia) para fazê-lo "mordida". Eu usei uma classe para implementar o estilo em vez de usar um estilo incorporado de modo a tentar que, se o acima não funcionar por algum motivo.

Respondeu 27/04/2016 em 20:44
fonte usuário

votos
3

Isto é o que chamamos de autocomplete de uma caixa de texto. digite descrição da imagem aqui Podemos desativar o preenchimento automático de uma caixa de texto em 2 maneiras-

  1. Por Etiqueta Navegador
  2. por Código

    Para desativar no browser ir para a configuração

    Para dissable em browse ir para a configuração

Ir para avançar configuração e desmarque a caixa de seleção e, em seguida, em Restaurar.

Ir para avançar configuração e desmarque a caixa de seleção e, em seguida, em Restaurar.

Se você quiser desativar na codificação rótulo que você pode fazer como acompanhamento
Usando AutoCompleteType="Disabled":

<asp:TextBox runat="server" ID="txt_userid" AutoCompleteType="Disabled"></asp:TextBox>  

Ao definir Form autocomplete="off":

<asp:TextBox runat="server" ID="txt_userid" autocomplete="off"></asp:TextBox> 

Ao definir Form autocomplete="off":

<form id="form1" runat="server" autocomplete="off">  
    //your content
</form>  

Por meio de código em cs página

protected void Page_Load(object sender, EventArgs e)  
    {  
    if(!Page.IsPostBack)  
    {  


        txt_userid.Attributes.Add("autocomplete", "off");  

    }  
}  

Usando jQuery

head runat="server">  
<title></title>  
<script src="Scripts/jquery-1.6.4.min.js"></script>  
<script type="text/javascript">  
    $(document).ready(function () {  
        $('#txt_userid').attr('autocomplete', 'off');  

    });  

</script>  
Respondeu 19/03/2016 em 05:05
fonte usuário

votos
3
<script language="javascript" type="text/javascript">
    $(document).ready(function () {
        try {
            $("input[type='text']").each(function(){
                           $(this).attr("autocomplete","off");
                        });
        }
        catch (e)
        { }
    });

</script>
Respondeu 16/11/2015 em 13:02
fonte usuário

votos
2

Se você quiser impedir que o plug-in comum LastPassa partir de preenchimento automático um campo bem, você pode adicionar o atributo data-lpignore="true"adicionado a outros sugestões sobre esta discussão. Note que isso não se aplica apenas a campos de senhas.

<input type="text" autocomplete="false" data-lpignore="true" />

Eu estava tentando fazer a mesma coisa há um tempo atrás, e foi perplexo porque nenhuma das sugestões que eu encontrei funcionou para mim. Acabou foi LastPass.

Respondeu 21/11/2018 em 23:06
fonte usuário

votos
2

Eu já resolveu a luta interminável com o Google Chrome com o uso de caracteres aleatórios.

<input name="name" type="text" autocomplete="rutjfkde">

Esperamos que ele vai ajudar a outras pessoas.

Respondeu 04/08/2018 em 14:22
fonte usuário

votos
2

Google Chrome ignora o autocomplete="off"atributo para certas entradas, incluindo entradas de senha e entradas comuns detectados pelo nome.

Por exemplo, se você tem uma entrada com o nome address, então Chrome irá fornecer sugestões de preenchimento automático de endereços digitados em outros sites, mesmo que você diga a ele para não :

<input type="string" name="address" autocomplete="off">

Se você não quer Chrome para fazer isso, então você pode renomear ou namespace nome do campo de formulário:

<input type="string" name="mysite_addr" autocomplete="off">

Se você não se importa preencher automaticamente os valores que foram previamente inseridos em seu site, então você pode deixar autocomplete habilitado. Namespacing o nome do campo deve ser suficiente para evitar valores lembrados de outros sites de aparecer.

<input type="string" name="mysite_addr" autocomplete="on">
Respondeu 22/06/2018 em 06:10
fonte usuário

votos
2

Não parece ser possível conseguir isso sem usar um código do lado do lado do cliente combinação e servidor.

A fim de se certificar de que o usuário deve preencher o formulário de cada vez sem autocomplete eu uso as seguintes técnicas:

  1. Gerar os nomes de campo de formulário no servidor e utilizar campos de entrada ocultos para armazenar esses nomes, para que, quando submetidas ao servidor o código do lado do servidor pode usar os nomes gerados para acessar os valores de campo. Esta é parar o usuário de ter a opção de auto preencher os campos.

  2. Coloque três instâncias de cada campo de formulário no formulário e ocultar os primeiro e último campos de cada conjunto usando css e, em seguida, desativá-los após o carregamento da página usando javascript. Isso é para evitar que o navegador preenchendo os campos automaticamente.

Aqui está um violino que demonstra o javascript, css e html, conforme descrito no nº 2 https://jsfiddle.net/xnbxbpv4/

javascript:

$(document).ready(function() {
    $(".disable-input").attr("disabled", "disabled");
});

css:

.disable-input {
  display: none;
}

html:

<form>
<input type="email" name="username" placeholder="username" class="disable-input">
<input type="email" name="username" placeholder="username">
<input type="email" name="username" placeholder="username" class="disable-input">
<br>
<input type="password" name="password" placeholder="password" class="disable-input">
<input type="password" name="password" placeholder="password">
<input type="password" name="password" placeholder="password" class="disable-input">
<br>
<input type="submit" value="submit">
</form>

Aqui está um exemplo aproximada do que o código do servidor usando asp.net com a lâmina seria facilitar # 1

modelo:

public class FormModel
{
    public string Username { get; set; }
    public string Password { get; set; }
}

controlador:

public class FormController : Controller
{
    public ActionResult Form()
    {
        var m = new FormModel();

        m.Username = "F" + Guid.NewGuid().ToString();
        m.Password = "F" + Guid.NewGuid().ToString();

        return View(m);
    }

    public ActionResult Form(FormModel m)
    {
        var u = Request.Form[m.Username];
        var p = Request.Form[m.Password];

        // todo: do something with the form values

        ...

        return View(m);
    }
}

Visão:

@model FormModel

@using (Html.BeginForm("Form", "Form"))
{
    @Html.HiddenFor(m => m.UserName)
    @Html.HiddenFor(m => m.Password)

    <input type="email" name="@Model.Username" placeholder="username" class="disable-input">
    <input type="email" name="@Model.Username" placeholder="username">
    <input type="email" name="@Model.Username" placeholder="username" class="disable-input">
    <br>
    <input type="password" name="@Model.Password" placeholder="password" class="disable-input">
    <input type="password" name="@Model.Password" placeholder="password">
    <input type="password" name="@Model.Password" placeholder="password" class="disable-input">
    <br>
    <input type="submit" value="submit">
}
Respondeu 28/02/2017 em 10:25
fonte usuário

votos
2

Safari não mudar sua mente sobre autocomplete se definir autocomplete="off"dinamicamente a partir de javascript. No entanto, respeitaria se você fizer isso em base per-campo.

$(':input', $formElement).attr('autocomplete', 'off');
Respondeu 01/11/2015 em 10:28
fonte usuário

votos
2

Sei que este é um post antigo, mas poderia ser importante saber que o Firefox (acho que só firefox) usa um valor chamado ismxfilledque basicamente obriga autocomplete.

ismxfilled="0" para OFF

ou

ismxfilled="1" para ON

Respondeu 13/08/2015 em 18:22
fonte usuário

votos
1

Tente isto:

<input type='text' autocomplete='off' />
Respondeu 27/05/2017 em 08:13
fonte usuário

votos
1

Gostaria de esclarecer que esta resposta é para sermos mais completos e para conhecimento da comunidade, de forma alguma é recomendado.

Com relação ao Internet Explorer 11, há um recurso de segurança no lugar que pode ser usado para bloquear autocomplete. Funciona assim:

Qualquer valor de entrada forma que é modificado em JavaScript depois que o usuário já entrou ele é sinalizado como inelegível para preenchimento automático.

Este recurso é normalmente usado para proteger os usuários contra sites mal-intencionados que querem alterar sua senha depois de inseri-lo ou algo semelhante.

No entanto, você pode inserir um único caractere especial no início de uma seqüência de senha para bloquear autocomplete. Este carácter especial poderia ser detectado e removido mais tarde abaixo da pipeline.

Respondeu 17/11/2016 em 17:41
fonte usuário

votos
1

Uma solução alternativa não é para inserir o campo de senha no DOM antes que o usuário quer mudar a senha. Isso pode ser aplicável em certos casos:

Em nosso sistema, temos um campo de senha que em uma página de administração, por isso devemos evitar inadvertidamente a configuração de senhas de outros usuários. O formulário tem uma caixa extra que vai alternar a visibilidade campo de senha por este motivo.

Portanto, neste caso, o preenchimento automático a partir de um gerenciador de senhas torna-se um duplo problema, porque a entrada não vai mesmo ser visível para o usuário.

A solução era ter o gatilho checkbox se o campo de senha é inserida no DOM, e não apenas a sua visibilidade.

implementação Pseudo para AngularJS:

<input type="checkbox" ng-model="createPassword">
<input ng-if="changePassword" type="password">
Respondeu 24/10/2016 em 09:16
fonte usuário

votos
1

Eu uso o seguinte trecho de jQuery:

// Prevent input autocomplete
$.fn.preventAutocomplete = function() {
    this.each(function () {
        var $el = $(this);
        $el
            .clone(false, false)
            .insertBefore($el)
            .prop('id', '')
            .hide()
        ;
    });
};

E que apenas $('#login-form input').preventAutocomplete();

Respondeu 02/09/2016 em 10:14
fonte usuário

votos
0

Isso funcionou para mim como um encanto.

  1. Defina o atributo autocomplete do formulário para fora
  2. Adicionar um campo de entrada manequim e defina seu atributo também para fora.
<form autocomplete="off">
 <input type="text" autocomplete="off" style="display:none">
</form>
Respondeu 17/12/2018 em 06:39
fonte usuário

votos
0

Para evitar navegador auto preencher com credenciais de login do site salvos do usuário, coloque um campo de entrada de texto e senha na parte superior do formulário com valores não vazios e estilo "position: absolute; top: -999px; left: -999px" definido para ocultar os campos.

<form>
  <input type="text" name="username_X" value="-" tabindex="-1" aria-hidden="true" style="position: absolute; top: -999px; left:-999px" />
  <input type="password" name="password_X" value="-" tabindex="-1" aria-hidden="true" style="position: absolute; top: -999px; left:-999px" />
  <!-- Place the form elements below here. -->
</form>

É importante que um campo de texto preceder o campo de senha. Caso contrário, o preenchimento automático não pode ser impedido em alguns casos.

É importante que o valor dos campos tanto o texto e senha não estar vazio, para evitar que os valores padrão sejam substituídos em alguns casos.

É importante que estes dois campos estão diante do "real" de campo (s) tipo senha no formulário.

Para navegadores mais recentes que são html 5,3 compliant o valor do atributo autocomplete "new-password" deve funcionar.

<form>
  <input type="text" name="username" value="" />
  <input type="password" name="password" value="" autocomplete="new-password" />
</form>

A combinação dos dois métodos podem ser utilizados para apoiar ambos os navegadores mais antigos e mais recentes.

<form>
  <div style="display:none">
    <input type="text" readonly tabindex="-1" />
    <input type="password" readonly tabindex="-1" />
  </div>
  <!-- Place the form elements below here. -->
  <input type="text" name="username" value="" />
  <input type="password" name="password" value="" autocomplete="new-password" />
</form>
Respondeu 07/07/2018 em 18:20
fonte usuário

votos
0

Para resolver este problema, eu usei alguns truques CSS e as seguintes obras para mim.

input {
    text-security:disc;
    -webkit-text-security:disc;
    -mox-text-security:disc;
}

Por favor, leia este artigo para obter mais detalhes.

Respondeu 11/05/2018 em 13:19
fonte usuário

votos
0

I foi capaz de parar Chrome 66 de preenchimento automático, adicionando duas entradas falsas e dando-lhes posição absoluta:

<form style="position: relative">
  <div style="position: absolute; top: -999px; left: -999px;">
    <input name="username" type="text" />
    <input name="password" type="password" />
  </div>
  <input name="username" type="text" />
  <input name="password" type="password" />

No início, eu tentei adicionar display:none;às entradas, mas Chrome ignorou e autofilled as visíveis.

Respondeu 08/05/2018 em 22:07
fonte usuário

votos
0

Não há entradas falsas, sem javascript!

Não há nenhuma maneira que desativar o preenchimento automático de forma consistente em todos os navegadores. Eu tentei todos os diferentes sugestões e nenhum deles funciona em todos os navegadores. A única maneira não está usando a entrada de senha em tudo. Aqui está o que eu vim com:

<style type="text/css">
    @font-face {
        font-family: 'PasswordDots';
        url('/assets/font/password-dots.woff2?v=1.0.0') format('woff2');
        font-weight: normal;
        font-style: normal;
    }

    input.password {
        font-family: 'PasswordDots' !important;
        font-size: 8px !important;
    }
</style>

<input class="password" type="text" spellcheck="false" />

Download: senha-dots.woff2

Aqui está como o meu resultado final se parece com:

Máscara de senha

O efeito colateral negativo é que é possível copiar texto simples a partir da entrada, no entanto, deve ser possível para evitar que, com alguns JS.

Respondeu 13/04/2018 em 06:35
fonte usuário

votos
0

finalmente eu tenho uma solução adicionar primeiro 2 campos de texto escondidas

e apenas adicionar uma directiva angular como este

 (function () {

    'use strict';

    appname.directive('changePasswordType', directive);

    directive.$inject = ['$timeout', '$rootScope',  '$cookies'];

    function directive($timeout,  $rootScope, $cookies) {
        var directive = {
            link: link,
            restrict: 'A'
        };

        return directive;

        function link(scope,element) {
            var process = function () {
                var elem =element[0];
                elem.value.length > 0 ? element[0].setAttribute("type", "password") :
                element[0].setAttribute("type", "text");
            }

            element.bind('input', function () {
                process();
            });

            element.bind('keyup', function () {
                process();
            });
        }
    }
})()

em seguida, usá-lo em seu campo de texto em que você precisa para evitar a completa auto

    <input type="text" style="display:none">\\can avoid this 2 lines
    <input type="password" style="display:none">
    <input type="text"  autocomplete="new-password" change-password-type>

NB: não se esqueça de incluir jQuery e definir type ="text"inicialmente

Respondeu 26/03/2018 em 12:07
fonte usuário

votos
0

Você também pode usar um em vez de uma entrada para saltar a parte de preenchimento automático.

Respondeu 19/03/2018 em 12:18
fonte usuário

votos
0

Você pode usar autocomplete = off em controles de entrada para evitar a conclusão automática

Por exemplo:

<input type=text name="test" autocomplete="off" />

se o código acima não funciona, então tente adicionar os atributos autocapitalize = "off" autocomplete = "off"

Respondeu 03/03/2018 em 00:47
fonte usuário

votos
0

Você pode usar autocomplete = off em controles de entrada para evitar a conclusão automática

Por exemplo:

<input type=text name="test" autocomplete="off" />

se o código acima não funciona, então tente adicionar esses atributos também

autocapitalize = "off" autocomplete = "off"

ou

Alterar o atributo tipo de entrada a type = "search". O Google não se aplicam auto-preenchimento para entradas com um tipo de pesquisa.

Respondeu 03/03/2018 em 00:35
fonte usuário

votos
0

Fixo. Só precisa adicionar acima do campo de entrada reais

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion - MDN https://medium.com/paul-jaworski/turning-off-autocomplete-in-chrome-ee3ff8ef0908 - medium testado em EDGE, Chrome (mais recente V63), Firefox Quantum (57.0.4 64 бит), Firefox (52.2.0) campos falsos são uma solução alternativa para o preenchimento automático de cromo / ópera recebendo os campos errados

 const fakeInputStyle = {opacity: 0, float: 'left', border: 'none', height: '0', width: '0'}

 <input type="password" name='fake-password' autoComplete='new-password' tabIndex='-1' style={fakeInputSyle} />

<TextField
  name='userName'
  autoComplete='nope'
  ... 
/>

<TextField
      name='password'
      autoComplete='new-password'
      ... 
    />
Respondeu 19/01/2018 em 12:57
fonte usuário

votos
0

Nenhuma das respostas fornecidas trabalhou em todos os navegadores que eu testei. Com base em respostas já fornecidas, é isso que eu acabei com, (testado) no Chrome 61 , Microsoft Edge 40 (edgehtml 15), IE 11 , o Firefox 57 , Opera 49 e Safari 5.1 . É maluco, como resultado de muitos ensaios; no entanto, ele funciona para mim.

<form autocomplete="off">
    ...
    <input type="password" readonly autocomplete="off" id="Password" name="Password" onblur="this.setAttribute('readonly');" onfocus="this.removeAttribute('readonly');" onfocusin="this.removeAttribute('readonly');" onfocusout="this.setAttribute('readonly');" />
    ...
</form> 

<script type="text/javascript">
    $(function () {           
        $('input#Password').val('');
        $('input#Password').on('focus', function () {
        if (!$(this).val() || $(this).val().length < 2) {
            $(this).attr('type', 'text');
        }
        else {
            $(this).attr('type', 'password');
        }
    });
    $('input#Password').on('keyup', function () {
        if (!$(this).val() || $(this).val().length < 2) {
            $(this).attr('type', 'text');
        }
        else {
            $(this).attr('type', 'password');
        }
    });
    $('input#Password').on('keydown', function () {
        if (!$(this).val() || $(this).val().length < 2) {
            $(this).attr('type', 'text');
        }
        else {
            $(this).attr('type', 'password');
        }
    });
</script>
Respondeu 22/11/2017 em 08:28
fonte usuário

votos
0

autocomplete = 'off' não funcionou para mim, de qualquer maneira eu definir o atributo de valor do campo de entrada para um ou seja, o espaço <input type='text' name='username' value=" "> que o conjunto de caracteres de entrada padrão para um espaço, e uma vez que o nome de usuário estava em branco a senha foi liberado também.

Respondeu 12/03/2017 em 19:17
fonte usuário

votos
-14

Por que você iria tornar a vida do seu usuário menos conveniente?

"Senhas / dados / etc cartão de crédito não deve ser salvo" é um argumento ruim: com autocomplete em, navegadores no Mac OS X armazenar esses valores em um banco de dados criptografado com permissões por aplicação. Por outro lado, o que é o efeito realista de autocomplete=off? O usuário vai escrevê-lo em um arquivo de texto sem criptografia, ou melhor ainda, em um post-it nota anexada à tela.

Boa coisa não é bookmarklets como o que Antti mencionado, e patches para fazer o motor de ignorar o atributo por completo .

Sério, peço-lhe para reconsiderar usar este atributo. Ele não beneficia ninguém.

Respondeu 08/09/2008 em 20:42
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more