Skip to main content
Validação HTML

Valor inválido “” para o atributo “name” no elemento “input”: Não pode estar vazio.

Sobre este problema HTML

O atributo name num elemento <input> identifica os dados do controlo de formulário quando o formulário é enviado. Atua como a chave no par chave-valor enviado para o servidor (ex.: email=user@example.com). Quando define name="", o atributo está presente mas contém uma string vazia, que a especificação HTML considera um valor inválido. Um nome vazio significa que os dados do input serão excluídos do payload de envio do formulário na maioria dos navegadores, tornando-o funcionalmente inútil para o processamento de formulários.

Esta questão é importante por várias razões:

  • Funcionalidade do formulário: Inputs com nomes vazios são tipicamente omitidos dos dados do formulário, pelo que o servidor nunca recebe o input do utilizador.
  • Conformidade com padrões: A especificação HTML requer que se o atributo name estiver presente, o seu valor não pode estar vazio.
  • Referências JavaScript: Um name vazio torna difícil referenciar o elemento usando métodos como document.getElementsByName() ou FormData.
  • Acessibilidade: Leitores de ecrã e tecnologias assistivas podem usar o atributo name para ajudar a identificar controlos de formulário, e um valor vazio não fornece informação útil.

Note que o atributo name não é tecnicamente obrigatório em todos os elementos <input> — é perfeitamente válido omiti-lo completamente. Por exemplo, inputs usados puramente para interações JavaScript do lado do cliente sem envio de formulário não precisam de um name. O erro surge especificamente quando o atributo está presente mas definido como uma string vazia.

Para corrigir a questão, atribua um nome significativo que descreva os dados que o input recolhe, ou remova o atributo name completamente se o input não fizer parte de um envio de formulário.

Exemplos

❌ Atributo name vazio despoleta o erro

<form action="/submit" method="post">
  <label for="email">Email:</label>
  <input type="email" id="email" name="">
  <button type="submit">Submit</button>
</form>

✅ Fornecer um valor name significativo

<form action="/submit" method="post">
  <label for="email">Email:</label>
  <input type="email" id="email" name="email">
  <button type="submit">Submit</button>
</form>

✅ Remover name quando o input não é enviado

Se o input for usado apenas para interação do lado do cliente e não precisar de fazer parte dos dados do formulário, simplesmente omita o atributo:

<label for="search">Filter results:</label>
<input type="text" id="search">

❌ Múltiplos inputs com nomes vazios

Este padrão às vezes aparece quando os inputs são gerados dinamicamente com atributos placeholder:

<form action="/register" method="post">
  <input type="text" name="">
  <input type="password" name="">
  <button type="submit">Register</button>
</form>

✅ Cada input recebe um nome descritivo

<form action="/register" method="post">
  <label for="username">Username:</label>
  <input type="text" id="username" name="username">
  <label for="password">Password:</label>
  <input type="password" id="password" name="password">
  <button type="submit">Register</button>
</form>

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.