Sobre este problema HTML
O atributo autocomplete informa aos navegadores se e como preencher automaticamente um campo de formulário. A especificação HTML define um conjunto rigoroso de valores válidos para este atributo, conhecidos como nomes de campo de preenchimento automático. Estes incluem valores como "on", "off", "name", "email", "username", "new-password", "current-password", "address-line1", "postal-code", "cc-number", e muitos outros. Quando você usa um valor que não aparece nesta lista — como "nothanks", "nope", ou "false" — o validador W3C reporta-o como um nome de campo de preenchimento automático inválido.
Uma razão comum para os programadores usarem valores inventados é a frustração com navegadores que ignoram autocomplete="off". Alguns navegadores (especialmente o Chrome) podem ainda preencher automaticamente determinados campos mesmo quando autocomplete="off" está definido, particularmente para campos relacionados com login. Isto levou a soluções alternativas usando strings aleatórias, mas estas não são padrão e podem produzir comportamento imprevisível em diferentes navegadores e tecnologias assistivas.
Porque isto importa
- Conformidade com padrões: Valores de atributo inválidos tornam o seu HTML não-conforme, o que pode levar a comportamento inesperado do navegador agora ou no futuro.
-
Acessibilidade: Leitores de ecrã e outras tecnologias assistivas podem usar o atributo
autocompletepara ajudar os utilizadores a preencher formulários. Um valor reconhecido como"name"ou"email"fornece a estas ferramentas contexto significativo, enquanto uma string aleatória não fornece nenhum. -
Comportamento do navegador: Os navegadores são projetados para interpretar os valores padrão. Um valor não reconhecido pode ser tratado de forma inconsistente — alguns navegadores podem ignorá-lo, outros podem tratá-lo como
"on", e o comportamento pode mudar entre versões.
Como corrigir
Se você quiser desativar o autocomplete, use "off":
<input type="text" name="search" autocomplete="off">
Se você quiser ajudar os navegadores a preencher automaticamente corretamente, use o nome de campo de preenchimento automático apropriado da especificação:
<input type="email" name="email" autocomplete="email">
Se autocomplete="off" não estiver a ser respeitado pelo navegador (um problema conhecido com alguns campos de login no Chrome), considere estas alternativas conformes com os padrões:
-
Use
autocomplete="new-password"em campos de palavra-passe onde não quer que palavras-passe guardadas sejam sugeridas. - Use um token válido mais específico que não corresponda ao que o navegador está a tentar preencher automaticamente.
-
Use o atributo
readonlye remova-o no foco via JavaScript como medida suplementar.
Exemplos
❌ Inválido: string arbitrária como valor de autocomplete
<form>
<label for="firstName">Primeiro nome</label>
<input type="text" name="firstName" id="firstName" autocomplete="nothanks">
<label for="userEmail">Email</label>
<input type="email" name="userEmail" id="userEmail" autocomplete="nope">
</form>
Tanto "nothanks" como "nope" não são nomes de campo de preenchimento automático válidos e irão gerar o erro de validação.
✅ Válido: usando "off" para desativar o autocomplete
<form>
<label for="firstName">Primeiro nome</label>
<input type="text" name="firstName" id="firstName" autocomplete="off">
<label for="userEmail">Email</label>
<input type="email" name="userEmail" id="userEmail" autocomplete="off">
</form>
✅ Válido: usando nomes de campo de preenchimento automático adequados
<form>
<label for="firstName">Primeiro nome</label>
<input type="text" name="firstName" id="firstName" autocomplete="given-name">
<label for="userEmail">Email</label>
<input type="email" name="userEmail" id="userEmail" autocomplete="email">
<label for="newPass">Nova palavra-passe</label>
<input type="password" name="newPass" id="newPass" autocomplete="new-password">
</form>
Usar tokens de preenchimento automático descritivos como "given-name", "email", e "new-password" é a melhor abordagem quando você quer que navegadores e tecnologias assistivas compreendam os seus campos de formulário. Para uma lista completa de nomes de campo de preenchimento automático válidos, consulte a secção de preenchimento automático da especificação HTML do WHATWG.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.