edubun
Português

Noções de formulários

Clique na palavra Email ao lado de um campo de formulário bem feito e o cursor pula para dentro da caixa. Esse pequeno detalhe é o elemento label fazendo o trabalho dele.

O que um formulário faz

Caixas de busca, páginas de cadastro e telas de pagamento são todas formulários. Um elemento <form> agrupa os controles e, quando o visitante o envia, o navegador manda o name de cada controle junto com o valor dele para o endereço do atributo action do formulário. O atributo method diz como: get põe os dados no endereço, o que serve para buscas que você pode querer salvar nos favoritos, enquanto post os envia no corpo da requisição, o que serve para tudo o que altera dados, como um pedido. O HTML monta o formulário; um programa no servidor decide o que fazer com o que chega.

<form action="/subscribe" method="post">
  <label for="name">Name</label>
  <input id="name" name="name" type="text" autocomplete="name">

  <label for="email">Email</label>
  <input id="email" name="email" type="email" required autocomplete="email">

  <button type="submit">Subscribe</button>
</form>
Cada label se liga ao seu input por valores iguais de for e id.

Todo controle precisa de um label

O elemento <label> dá nome a um controle. Ligue os dois dando ao input um id e ao label um atributo for igual, ou colocando o input dentro do label. A ligação faz duas coisas. Os leitores de tela leem o label quando o campo recebe o foco, então o usuário ouve Email, editar texto em vez de só editar texto. E clicar no label põe o foco no campo ou marca a caixa de seleção, o que dá a todos, principalmente a quem usa celular, um alvo maior. Um placeholder (texto de dica cinza dentro da caixa) não é um label: ele some assim que você digita, muitas vezes tem pouco contraste, e algumas tecnologias assistivas o ignoram.

Tipos de input

O atributo type de <input> muda o controle. text é a caixa padrão de uma linha. email, tel e url parecem iguais, mas mostram o teclado certo no celular, e o navegador confere se um endereço de e-mail tem o formato certo. number aceita algarismos e pode ter min e max. password esconde o que você digita, date oferece um calendário, e checkbox e radio são caixas para marcar. Para textos mais longos, use <textarea>, e para escolher numa lista, <select> com elementos <option> dentro.

Como agrupar opções

Os botões de opção (radio) de uma mesma pergunta têm o mesmo name, e só um deles pode ser escolhido de cada vez. Envolva o grupo em <fieldset> e coloque a pergunta em <legend>. Assim o leitor de tela lê a pergunta junto com cada opção: Loaf size, Small, botão de opção, 1 de 2. Cada botão de opção continua tendo o seu próprio label.

Botões e verificações embutidas

Um <button> dentro de um formulário o envia por padrão; escrever type="submit" deixa isso claro, e type="button" cria um botão que não faz nada até o JavaScript lhe dar uma tarefa. Antes de enviar, o navegador pode verificar os campos por você. required barra o formulário se o campo estiver vazio, type="email" recusa texto sem @, e minlength, min e max definem limites. Essas verificações ajudam o visitante a corrigir erros cedo, mas rodam no navegador dele e podem ser contornadas, então o servidor precisa verificar os dados de novo. O atributo autocomplete, com valores como email ou name, permite que o navegador preencha dados salvos, o que poupa digitação para todos e ajuda especialmente pessoas com dificuldades motoras ou de memória.

No editor abaixo, o formulário é mostrado numa área isolada, então apertar Subscribe não envia nada para lugar nenhum. O botão Verificar só olha o seu HTML.
formAgrupa controles e envia seus nomes e valores
labelDá nome a um controle; for corresponde ao id do input
nameChave enviada ao servidor junto com o valor
requiredO campo precisa ser preenchido antes do envio
fieldset / legendAgrupa controles relacionados sob uma pergunta
placeholderTexto de dica dentro de uma caixa; não é um label
method="post"Envia os dados no corpo da requisição; para alterações como pedidos
  1. Um label tem for="phone". A qual input ele pertence?
    • Ao input com id="phone"
    • Ao input com name="phone"
    • Ao próximo input, qualquer que seja o id
  2. Por que um placeholder não basta como label?
    • Ele some quando você digita e muitas vezes tem pouco contraste
    • Não é HTML válido
    • Ele não envia nada
  3. Qual tipo de input mostra o teclado de e-mail no celular e confere o @?
  4. Dois botões de opção precisam se excluir. O que eles precisam ter em comum?
    • name
    • id
    • value
  5. Qual elemento guarda a pergunta de um fieldset?
    • legend
    • caption
    • label
  6. Qual method serve para um formulário de busca que você pode salvar nos favoritos?
    • get
    • post
  7. O navegador verifica os campos obrigatórios. O servidor ainda precisa verificar?
    • Sim, as verificações do navegador podem ser contornadas
    • Não, o navegador basta
    • Só para senhas
  8. Qual elemento é o certo para uma mensagem de várias linhas?
    • textarea
    • input type="text"
    • select
  9. O que acontece ao clicar num label bem ligado?
    • Põe o foco no campo dele ou marca a caixa dele
    • Envia o formulário
    • Apaga o campo
  10. Qual atributo deixa o navegador preencher um endereço de e-mail salvo?
    • autocomplete="email"
    • placeholder="email"
    • value="email"
Pontos-chave
  • form envia o name e o valor de cada controle para action, por get ou post.
  • Todo controle recebe um label (for corresponde ao id); placeholder não é label.
  • Escolha o type certo; agrupe radios com fieldset e legend; o servidor verifica de novo.
Fontes deste curso (10)
  • WHATWG, HTML Living Standard (html.spec.whatwg.org, checked 2026-10-17)
  • MDN Web Docs, Learn web development: Structuring content with HTML, and the HTML element reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Structuring_content and developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements, checked 2026-10-17)
  • MDN, HTML images (alt text guidance, checked 2026-10-17)
  • W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree, checked 2026-10-17)
  • CERN, A short history of the Web (home.cern/science/computing/the-birth-of-the-web/short-history-web/, checked 2026-10-17)
  • W3C and WHATWG memorandum of understanding, 28 May 2019 (w3.org/2019/04/WHATWG-W3C-MOU.html, checked 2026-10-17)
  • W3C, Using ARIA, first rule of ARIA use (w3.org/TR/using-aria/, checked 2026-10-17)
  • W3C Markup Validation Service (validator.w3.org, checked 2026-10-17)
  • MDN, Viewport meta element (checked 2026-10-17)
  • Every code exercise was checked with a Playwright probe against a reference solution.

Data de verificação: 2026-10-17