Seleção de opções: checkbox e radio
Aprenda a criar caixas de seleção múltipla e botões de escolha única — e entenda quando usar cada um.
Além dos campos de texto, formulários frequentemente precisam
que o usuário selecione opções pré-definidas. Para isso,
temos dois tipos de <input> muito importantes: checkbox
e radio. Embora ambos permitam a seleção de opções, eles
servem a propósitos diferentes.
type="checkbox": caixas de seleção múltipla
Um checkbox (caixa de seleção) permite que o usuário
selecione zero, uma ou várias opções de um conjunto.
Pense nele como uma lista de itens onde você pode marcar
quantos quiser.
Características principais:
- Seleção múltipla: O usuário pode marcar quantas caixas desejar.
- Estado: Pode estar "marcado" (
checked) ou "desmarcado". - Atributo
value: É crucial para identificar qual opção foi selecionada. O valor dovalueé o que será enviado ao servidor se a caixa estiver marcada. - Atributo
checked: Um atributo booleano que, se presente, faz com que a caixa de seleção venha pré-marcada por padrão.
Exemplo:
<form>
<p>Quais linguagens de programação você conhece?</p>
<input type="checkbox" id="html" name="linguagens" value="html">
<label for="html">HTML</label><br>
<input type="checkbox" id="css" name="linguagens" value="css" checked>
<label for="css">CSS</label><br>
<input type="checkbox" id="js" name="linguagens" value="javascript">
<label for="js">JavaScript</label><br>
<input type="checkbox" id="python" name="linguagens" value="python">
<label for="python">Python</label><br>
</form>
Como os dados são enviados:
Se o usuário marcar "CSS" e "Python", o servidor receberá:
linguagens=css&linguagens=python. É importante que todos
os checkboxes de um mesmo grupo tenham o mesmo atributo name.
type="radio": botões de escolha única
Um radio button (botão de rádio) permite que o usuário
selecione apenas uma opção de um conjunto mutuamente
exclusivo. Pense nele como um rádio antigo, onde você só
pode sintonizar uma estação por vez.
Características principais:
- Escolha única: O usuário só pode selecionar uma opção por grupo.
- Agrupamento: Para que funcionem como um grupo de escolha única,
todos os botões de rádio de um mesmo grupo devem ter o mesmo
atributo
name. - Atributo
value: É crucial para identificar qual opção foi selecionada. O valor dovalueé o que será enviado ao servidor se o botão estiver selecionado. - Atributo
checked: Um atributo booleano que, se presente, faz com que o botão de rádio venha pré-selecionado por padrão. Apenas um botão de rádio por grupo pode terchecked.
Exemplo:
<form>
<p>Qual é o seu gênero?</p>
<input type="radio" id="masculino" name="genero" value="masculino">
<label for="masculino">Masculino</label><br>
<input type="radio" id="feminino" name="genero" value="feminino" checked>
<label for="feminino">Feminino</label><br>
<input type="radio" id="outro" name="genero" value="outro">
<label for="outro">Outro</label><br>
</form>
Como os dados são enviados:
Se o usuário selecionar "Feminino", o servidor receberá:
genero=feminino.
Atributos comuns para checkbox e radio
id: Identificador único para o campo (importante para olabel).name: Crucial para agrupar opções (mesmonamepara checkboxes que representam a mesma categoria, e para todos os radios de um grupo).value: O valor que será enviado ao servidor se a opção for selecionada.checked: Marca a opção por padrão.required: Torna a seleção de pelo menos uma opção obrigatória (para radios, basta umrequiredem qualquer um do grupo).disabled: Desabilita a opção.
Conectando label e input (novamente!)
Assim como nos campos de texto, é essencial conectar
cada <label> ao seu <input> (checkbox ou radio)
correspondente usando os atributos for e id.
<!-- Conexão correta -->
<input type="checkbox" id="aceito_termos" name="termos" value="sim">
<label for="aceito_termos">Eu aceito os termos e condições</label>
<!-- Benefícios: -->
<!-- - Ao clicar no texto do label, a caixa de seleção/botão de rádio é ativada/desativada. -->
<!-- - Leitores de tela leem o label para descrever o campo, melhorando a acessibilidade. -->
Resumindo
type="checkbox":- Permite seleção de zero, uma ou várias opções de um conjunto.
- Todos os checkboxes de uma mesma categoria devem ter o mesmo
name. - O
valueé enviado se a caixa estiver marcada.
type="radio":- Permite seleção de apenas uma opção de um conjunto mutuamente exclusivo.
- Todos os radio buttons de um mesmo grupo devem ter o mesmo
name. - Apenas um radio button por grupo pode ter
checkedpor padrão. - O
valuedo botão selecionado é enviado.
- Sempre use
<label>conectado ao<input>(foreid) para acessibilidade. - O atributo
nameé crucial para agrupar opções e para o servidor receber os dados.