Skip to main content
Validação HTML

Valor inválido “true” para o atributo “selected” no elemento “option”.

Sobre este problema HTML

Em HTML, os atributos booleanos como selected funcionam de forma diferente do que você poderia esperar se vier de uma linguagem de programação. A mera presença de um atributo booleano significa “true”, e a sua ausência significa “false”. Definir selected="true" é inválido porque os únicos valores permitidos para um atributo booleano são a string vazia ("") ou o nome do próprio atributo (por exemplo, selected="selected"). O valor "true" não é reconhecido pela especificação HTML, razão pela qual o validador W3C o sinaliza.

Isto é importante por várias razões. Primeiro, viola a especificação HTML WHATWG, que define explicitamente como os atributos booleanos devem ser escritos. Segundo, embora a maioria dos navegadores seja tolerante e ainda trate selected="true" como se a opção estivesse selecionada, depender deste comportamento permissivo é arriscado — pode levar a inconsistências entre navegadores ou ferramentas que analisam HTML de forma rigorosa. Terceiro, markup inválido pode causar problemas para tecnologias assistivas, ferramentas de teste automático e processadores HTML do lado do servidor que seguem a especificação de perto.

A mesma regra aplica-se a outros atributos booleanos como disabled, checked, readonly, multiple, required e hidden. Nenhum deles deve ser definido como "true" ou "false".

Vale também referir que definir um atributo booleano como "false" (por exemplo, selected="false") não o desativa — a mera presença do atributo ativa-o. Para desativar um atributo booleano, deve removê-lo completamente do elemento.

Exemplos

❌ Inválido: usar selected="true"

<select name="color">
  <option selected="true">Red</option>
  <option>Green</option>
  <option>Blue</option>
</select>

Isto desencadeia o erro de validação porque "true" não é um valor válido para o atributo booleano selected.

✅ Válido: atributo simples (preferido)

<select name="color">
  <option selected>Red</option>
  <option>Green</option>
  <option>Blue</option>
</select>

A forma mais simples e comum de escrever um atributo booleano — incluir apenas o nome do atributo sem valor.

✅ Válido: valor de string vazia

<select name="color">
  <option selected="">Red</option>
  <option>Green</option>
  <option>Blue</option>
</select>

Uma string vazia é um valor válido para qualquer atributo booleano segundo a especificação HTML.

✅ Válido: nome do atributo como valor

<select name="color">
  <option selected="selected">Red</option>
  <option>Green</option>
  <option>Blue</option>
</select>

Usar o nome do próprio atributo como seu valor também é válido. Esta forma é por vezes vista em markup estilo XHTML e em sistemas de templates.

❌ Inválido: usar selected="false" para desselecionar

<select name="color">
  <option selected="false">Red</option>
  <option>Green</option>
  <option>Blue</option>
</select>

Isto é tanto inválido quanto enganador. A opção continuará selecionada porque o atributo selected está presente. Para não selecionar uma opção, simplesmente omita o atributo:

<select name="color">
  <option>Red</option>
  <option>Green</option>
  <option>Blue</option>
</select>

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.