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.
Saiba mais: