Eu tenho 2 formulários básicos - entre e inscreva-se, ambos na mesma página. Agora, não tenho problemas com o preenchimento automático do formulário de login,mas o formulário de inscrição também é preenchido automaticamente, e eu não gosto disso.
Além disso, os estilos de formulário têm um fundo amarelo que não consigo substituir e não quero usar CSS embutido para fazer isso. O que posso fazer para que eles parem de ser amareladose (possivelmente) preenchimento automático? Desde já, obrigado!
Respostas:
para o preenchimento automático, você pode usar:
em relação ao problema de coloração:
da sua captura de tela, posso ver que o webkit gera o seguinte estilo:
1) como # id-styles são ainda mais importantes que .class, o seguinte pode funcionar:
2) se isso não funcionar, você pode tentar definir o estilo via javascript programaticamente
3) se isso não funcionar,
você está condenado :-)considere o seguinte: isso não oculta a cor amarela, mas torna o texto legível novamente.4) uma solução css / javascript:
css:
e o seguinte javascript deve ser executado onload:
por exemplo:
boa sorte :-)
5) Se nenhum dos trabalhos acima tentar remover os elementos de entrada, cloná-los e colocar os elementos clonados de volta na página (funciona no Safari 6.0.3):
6) A partir daqui :
fonte
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);
Engane-o com uma sombra interna "forte":
fonte
Adicione esta regra CSS e a cor amarela do plano de fundo desaparecerá. :)
fonte
Praticamente todos os navegadores modernos respeitarão isso.
fonte
autocomplete
é que é inválida no HTML antes da versão 5.Após 2 horas de pesquisa, parece que o Google Chrome ainda substitui a cor amarela, mas encontrei a correção. Também funcionará para foco instantâneo, etc. Tudo que você precisa fazer é adicionar
!important
a ele.isso removerá completamente a cor amarela dos campos de entrada
fonte
Você também pode alterar o atributo name dos elementos do formulário para que seja gerado algo, para que o navegador não o acompanhe. No entanto, o firefox 2.x + e o google chrome parecem não ter muitos problemas com isso, se o URL da solicitação for idêntico. Tente adicionar basicamente um parâmetro de solicitação de sal e um nome de campo de sal para o formulário de inscrição.
No entanto, acho que o preenchimento automático = "off" ainda é a melhor solução :)
fonte
Você pode desativar o preenchimento automático a partir do HTML5 (via
autocomplete="off"
), mas NÃO PODE substituir o realce do navegador. Você pode tentar mexer com::selection
CSS (a maioria dos navegadores exige um prefixo de fornecedor para que isso funcione), mas isso provavelmente também não ajudará.A menos que o fornecedor do navegador tenha implementado especificamente uma maneira específica de substituí-lo, você não pode fazer nada sobre esses estilos que já pretendem substituir a folha de estilo do site para o usuário. Geralmente, eles são aplicados após a aplicação das folhas de estilo e também ignoram as
! important
substituições.fonte
Às vezes, o preenchimento automático no navegador ainda é concluído automaticamente quando você tem apenas o código no
<form>
elementoTentei colocá-lo no
<input>
elemento também e funcionou melhor.No entanto, o suporte para esse atributo está cessando. Leia https://bugzilla.mozilla.org/show_bug.cgi?id=956906#c1
https://bugzilla.mozilla.org/show_bug.cgi?id=956906
Outro trabalho que descobri foi remover espaços reservados dentro dos campos de entrada que sugerem que é um campo de email, nome de usuário ou telefone (por exemplo, "Seu email", "Email" etc.)
Isso faz com que os navegadores não saibam que tipo de campo é, portanto, não tente preenchê-lo automaticamente.
fonte
Se estiver no campo de entrada, você está tentando "desmarcar" ...
Então, pode ficar assim:
fonte
Isso corrige o problema no Safari e no Chrome
fonte
A captura de tela à qual você vinculou diz que o WebKit está usando o seletor
input:-webkit-autofill
para esses elementos. Você já tentou colocar isso no seu CSS?Se isso não funcionar, provavelmente nada funcionará. Esses campos são realçados para alertar o usuário de que eles foram preenchidos automaticamente com informações privadas (como o endereço residencial do usuário) e pode-se argumentar que permitir que uma página oculte está permitindo um risco à segurança.
fonte
O
form
elemento possui umautocomplete
atributo que você pode definiroff
. No CSS, a!important
diretiva após uma propriedade impede que ela seja substituída:Somente o IE6 não entende isso.
Se eu entendi errado, também há a
outline
propriedade que você pode achar útil.fonte
!important
diretiva; nesse caso, ela tem precedência sobre todo o resto. Você deve verificar a folha de estilo do agente do usuário (embora eu não saiba onde encontrá-la).Vi o recurso de preenchimento automático da barra de ferramentas do Google desativado com javascript. Pode funcionar com outras ferramentas de preenchimento automático; Não sei se isso ajudará nos navegadores criados no preenchimento automático.
fonte
Depois de tentar várias coisas, encontrei soluções de trabalho que usurpavam os campos preenchidos automaticamente e os substituíam por duplicados. Para não perder eventos anexados, eu vim com outra solução (um pouco longa).
Em cada evento de "entrada", ele anexa rapidamente eventos de "alteração" a todas as entradas envolvidas. Ele testa se eles foram preenchidos automaticamente. Se sim, despache um novo evento de texto que induza o navegador a pensar que o valor foi alterado pelo usuário, permitindo remover o fundo amarelo.
fonte
Solução javascript simples para todos os navegadores:
Clone a entrada, redefina o atributo e oculte a entrada original. É necessário tempo limite para o iPad
fonte
Como o navegador procura campos de tipo de senha, outra solução alternativa é incluir um campo oculto no início do seu formulário:
fonte
Eu li muitos tópicos e tentei muitos pedaços de código. Depois de reunir todas essas coisas, a única maneira que encontrei para esvaziar de maneira limpa os campos de login e senha e redefinir o plano de fundo para branco foi o seguinte:
Sinta-se livre para comentar, estou aberto a todas as melhorias, se você encontrar algumas.
fonte
O preenchimento automático desativado não é suportado por navegadores modernos. A maneira mais fácil de resolver o preenchimento automático que encontrei foi uma pequena faixa com HTML e JS. A primeira coisa a fazer é alterar o tipo de entrada em HTML de 'senha' para 'texto'.
O preenchimento automático é iniciado após o carregamento da janela. Isso está ok. Mas quando o tipo do seu campo não é 'senha', o navegador não sabia quais campos devem ser preenchidos. Portanto, não haverá preenchimento automático nos campos do formulário.
Depois disso, vincule o evento focusin ao campo da senha, por ex. em Backbone:
Em
onInputPasswordFocusIn
, basta alterar o tipo do seu campo para senha, basta verificar:É isso aí!
UPD: essa coisa não funciona com o JavaSciprt desativado
UPD em 2018. Também encontrou algum truque engraçado. Defina o atributo readonly no campo de entrada e remova-o no evento de foco. Primeiro, impeça o navegador de preencher automaticamente os campos; o segundo permitirá a entrada de dados.
fonte
autocomplete=off
lo, pois funciona no FF, Chrome por um tempo e no IE, como na versão anteriorPor favor, tente com autocomplete = "none" na sua tag de entrada
Isso funciona para mim
fonte
Também tive que alterar a cor do texto para algo mais escuro (consulte Cores escuras do tema StackOverflow).
Então, acabamos com um híbrido da solução @ Tamás Pap, @MCBL e @ don:
fonte
Por que não colocar isso no seu css:
Isso deve cuidar do seu problema. Embora isso suscite um problema de usabilidade, porque agora o usuário não pode ver que o formulário foi preenchido automaticamente da maneira como está acostumado.
[edit] Depois de postar isso, vi que uma resposta semelhante já havia sido dada e que você comentou que não funcionava. Não vejo bem o porquê, porque funcionou quando o testei.
fonte
input:-webkit-autofill
einput --webkit-autocomplete
simplesmente não existeO verdadeiro problema aqui é que o Webkit (Safari, Chrome, ...) tem um bug. Quando houver mais de um [formulário] na página, cada um com um [tipo de entrada = "texto" nome = "foo" ...] (ou seja, com o mesmo valor para o atributo 'nome'), quando o usuário retornar para a página, o preenchimento automático será feito no campo de entrada do PRIMEIRO [formulário] na página, não no [formulário] enviado. Na segunda vez, o NEXT [formulário] será preenchido automaticamente e assim por diante. Somente [formulário] com um campo de texto de entrada com o mesmo nome será afetado.
Isso deve ser relatado aos desenvolvedores do Webkit.
O Opera preenche automaticamente o [formulário] correto.
O Firefox e o IE não preenchem automaticamente.
Então, eu digo novamente: isso é um bug no Webkit.
fonte