Skip to main content
Validação HTML

Valor inválido “” para o atributo “name” no elemento “form”: não deve estar vazio.

Sobre este problema HTML

A especificação HTML exige que se o atributo name for usado num elemento <form>, o seu valor deve ser uma string não vazia. Um atributo name="" vazio não serve qualquer propósito prático — não regista o formulário na coleção nomeada document.forms, e não pode ser usado como uma referência válida em scripts. O validador W3C sinaliza isto como um erro porque viola o modelo de conteúdo definido no WHATWG HTML Living Standard.

O atributo name num formulário é usado principalmente para aceder ao formulário programaticamente através de document.forms["formName"]. Quando o valor está vazio, este mecanismo de procura não funciona, pelo que o atributo torna-se sem sentido. Isto é diferente do atributo id, que também identifica elementos mas participa na navegação por fragmentos e direcionamento CSS. O atributo name em <form> é especificamente para a interface legacy document.forms named getter.

Vale a pena notar que o valor do atributo name num formulário não deve ser igual a uma string vazia, e deve ser único entre os elementos de formulário na coleção forms. Embora nomes duplicados não causem um erro de validação, podem levar a comportamento inesperado ao aceder aos formulários por nome em JavaScript.

Como corrigir

Você tem duas opções:

  1. Remova o atributo completamente. Se não estiver a referenciar o formulário por nome em JavaScript, o atributo name é desnecessário. Pode usar id em vez disso para direcionamento CSS ou JavaScript.
  2. Forneça um valor significativo e não vazio. Se precisar de referenciar o formulário através de document.forms, dê-lhe um nome descritivo que reflita o seu propósito.

Exemplos

❌ Inválido: atributo name vazio

<form name="">
  <label for="email">Email</label>
  <input type="email" id="email" name="email">
  <button type="submit">Subscrever</button>
</form>

Isto despoleta o erro do validador porque o atributo name está presente mas tem um valor de string vazio.

✅ Corrigido: atributo removido

<form>
  <label for="email">Email</label>
  <input type="email" id="email" name="email">
  <button type="submit">Subscrever</button>
</form>

Se não precisar de referenciar o formulário por nome, simplesmente remova o atributo.

✅ Corrigido: nome significativo fornecido

<form name="subscriptionForm">
  <label for="email">Email</label>
  <input type="email" id="email" name="email">
  <button type="submit">Subscrever</button>
</form>

Com um nome não vazio, pode agora aceder ao formulário em JavaScript usando document.forms["subscriptionForm"] ou document.forms.subscriptionForm.

✅ Alternativa: usar id em vez disso

<form id="subscription-form">
  <label for="email">Email</label>
  <input type="email" id="email" name="email">
  <button type="submit">Subscrever</button>
</form>

No desenvolvimento moderno, usar id com document.getElementById() ou document.querySelector() é frequentemente preferido sobre o atributo name para identificação de formulários. O atributo name em <form> é uma funcionalidade legacy que permanece válida mas não é necessária para a maioria dos casos de uso.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.