Skip to main content
Validação HTML

Valor inválido “” para o atributo “id” no elemento “select”: Um ID não pode ser uma string vazia.

Sobre este problema HTML

O atributo id identifica exclusivamente um elemento dentro de um documento. De acordo com a especificação WHATWG HTML living standard, se o atributo id for especificado, o seu valor deve ser não vazio e não deve conter caracteres de espaço em branco ASCII. O atributo em si é opcional — não precisa de o incluir — mas quando o faz, deve ter um valor válido. Definir id="" viola esta regra porque a string vazia não é um identificador válido.

Este problema ocorre frequentemente quando o código é gerado dinamicamente (por exemplo, por um motor de templates ou framework JavaScript) e a variável destinada a preencher o valor id resolve-se numa string vazia. Também pode acontecer quando os programadores adicionam o atributo como um placeholder e se esquecem de o preencher.

Por que isto é importante

  • Conformidade com normas: Um id vazio viola a especificação HTML, tornando o seu documento inválido.
  • Acessibilidade: Tecnologias assistivas como leitores de ecrã dependem dos atributos id para associar elementos <label> com controlos de formulário. Um id vazio quebra esta associação, tornando os formulários mais difíceis de usar para pessoas que dependem destas ferramentas.
  • JavaScript e CSS: Métodos como document.getElementById("") e seletores como # (sem identificador) não funcionarão como esperado. Um id vazio pode causar problemas subtis e difíceis de depurar nos seus scripts e estilos.
  • Comportamento do browser: Embora os browsers sejam geralmente tolerantes, um id vazio leva a comportamentos indefinidos. Diferentes browsers podem lidar com isto de forma inconsistente.

Como corrigir

  1. Atribua um valor significativo: Dê ao id um valor descritivo e único que identifique o propósito do elemento (por exemplo, id="country-select").
  2. Remova o atributo: Se não precisar do id, simplesmente remova-o do elemento completamente.
  3. Corrija a geração dinâmica: Se um motor de templates ou framework estiver a produzir o valor vazio, adicione uma verificação condicional para produzir um id válido ou omitir o atributo completamente.

Exemplos

❌ Incorreto: atributo id vazio

<label for="country">Country</label>
<select id="" name="country">
  <option value="us">United States</option>
  <option value="ca">Canada</option>
</select>

Isto desencadeia o erro de validação porque id="" é uma string vazia.

✅ Correto: valor id significativo

<label for="country">Country</label>
<select id="country" name="country">
  <option value="us">United States</option>
  <option value="ca">Canada</option>
</select>

O id agora tem um valor válido e não vazio, e o atributo for do elemento <label> refere-o corretamente.

✅ Correto: atributo id removido completamente

<label>
  Country
  <select name="country">
    <option value="us">United States</option>
    <option value="ca">Canada</option>
  </select>
</label>

Se não precisar do id, remova-o. Aqui, o <label> envolve diretamente o <select>, pelo que a associação for/id não é necessária — o label implícito funciona igualmente bem.

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.