Skip to main content
Validação HTML

O atributo “name” no elemento “option” está obsoleto. Use o atributo “id” em vez disso.

Sobre este problema HTML

O atributo name foi historicamente usado em elementos <option> em especificações HTML mais antigas, mas está obsoleto desde o HTML5. O WHATWG HTML Living Standard não lista name como um atributo válido para <option>. Os atributos válidos para <option> são disabled, label, selected e value, além dos atributos globais (como id, class, style, etc.).

É importante entender que o atributo name em <option> nunca serviu o mesmo propósito que name em <input> ou <select>. Para envio de formulários, o navegador envia o name do elemento pai <select> emparelhado com o value do <option> selecionado. Colocar name em elementos <option> individuais não tem efeito nos dados do formulário e pode enganar os programadores, fazendo-os pensar que isso influencia o comportamento do formulário.

Remover o atributo obsoleto name garante que o seu HTML está em conformidade com os padrões, evita confusão para programadores que mantêm o código, e previne potenciais problemas com o comportamento futuro dos navegadores. Se você precisa referenciar um <option> específico em JavaScript ou CSS, use o atributo global id em vez disso.

Exemplos

Incorreto: usando o atributo obsoleto name

<select id="pet-select" name="pet">
  <option value="">--Please choose an option--</option>
  <option name="dog-option" value="dog">Dog</option>
  <option name="cat-option" value="cat">Cat</option>
  <option name="hamster-option" value="hamster">Hamster</option>
</select>

Isto gera o erro de validação porque name não é um atributo válido em <option>.

Correto: usando id em vez de name

Se você precisa identificar unicamente cada opção (por exemplo, para direcioná-las com JavaScript ou CSS), use o atributo id:

<select id="pet-select" name="pet">
  <option value="">--Please choose an option--</option>
  <option id="dog-option" value="dog">Dog</option>
  <option id="cat-option" value="cat">Cat</option>
  <option id="hamster-option" value="hamster">Hamster</option>
</select>

Correto: simplesmente removendo name se nenhuma referência for necessária

Na maioria dos casos, você não precisa identificar opções individuais. O atributo value é suficiente para o envio do formulário, e você pode remover name completamente:

<select id="pet-select" name="pet">
  <option value="">--Please choose an option--</option>
  <option value="dog">Dog</option>
  <option value="cat">Cat</option>
  <option value="hamster">Hamster</option>
</select>

Note que o atributo name no próprio elemento <select> é perfeitamente válido e necessário — ele define a chave usada quando os dados do formulário são enviados. O aviso de atributo obsoleto aplica-se apenas ao name em elementos <option>.

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.