Abertura de impacto
O usuário agora fala com o sistema
Até aqui, o HTML organizava informação para leitura. Com formulários, o HTML começa a coletar
dados do usuário e preparar esses dados para envio ao servidor. É o começo da web dinâmica.
Promessa da aula:
Você vai dominar a arquitetura de formulários com form, action,
method, label, input, id, name,
fieldset, textarea, select e required.
Estrutura técnica
form, action, method, GET e POST
A tag form é o contêiner da interatividade. O atributo action
define o destino dos dados. O atributo method define como esses dados serão enviados.
<form action="/cadastro" method="post">
<label for="nome">Nome completo</label>
<input type="text" id="nome" name="nome" required>
<button type="submit">Enviar cadastro</button>
</form>
- GET: envia dados pela URL. Ideal para busca, filtros e consultas públicas.
- POST: envia dados no corpo da requisição. Ideal para cadastro, login, checkout e dados sensíveis.
Erro fatal:
Usar method="get" para senhas ou dados sensíveis expõe informações na URL.
Para cadastro e login, use POST.
Acessibilidade
label, for, input, id e name
label é o rótulo semântico do campo. O atributo for deve bater
exatamente com o id do input. O name é a identidade do dado para o servidor.
<label for="email-contato">E-mail de contato</label>
<input type="email"
id="email-contato"
name="usuario_email"
placeholder="seu@email.com"
required>
- id: identifica o elemento na página e conecta o label.
- name: identifica o dado enviado ao servidor.
- placeholder: é dica temporária, nunca substituto do label.
Erro eliminatório:
Input sem name pode aparecer na tela, mas o dado não chega corretamente ao backend.
Tipos de input
Escolha o tipo certo para o dado certo
<input type="text" name="nome">
<input type="email" name="email">
<input type="password" name="senha">
<input type="number" name="idade">
<input type="date" name="nascimento">
<input type="checkbox" name="termos" value="aceito">
<input type="radio" name="plano" value="basico">
<input type="radio" name="plano" value="premium">
O navegador usa o type para exibir teclados melhores no celular,
validar dados básicos e melhorar a experiência do usuário.
Erro da preguiça:
Usar type="text" para tudo. O Mestre usa email,
password, number, date, checkbox
e radio quando o dado exige.
Organização avançada
fieldset, legend, textarea, select e required
Formulários longos precisam ser organizados. fieldset agrupa campos relacionados,
legend dá nome ao grupo, textarea coleta texto longo,
select oferece escolhas fechadas e required valida campos essenciais.
<fieldset>
<legend>Preferências</legend>
<label for="estado">Estado</label>
<select id="estado" name="estado" required>
<option value="">Selecione uma opção</option>
<option value="sp">São Paulo</option>
<option value="rj">Rio de Janeiro</option>
</select>
<label for="bio">Objetivo profissional</label>
<textarea id="bio" name="objetivo" rows="5"></textarea>
</fieldset>
Desafio Mestre
Formulário Profissional de Cadastro HTML
Missão: criar o arquivo formulario-cadastro-html.html
com um cadastro profissional, semântico, acessível e pronto para integração futura com backend.
Requisitos obrigatórios do desafio
- Doctype HTML5 e
html lang="pt-BR".
- Head completo com charset, viewport, title e meta description.
- Body com header, main e footer.
- H1 com “Formulário Profissional de Cadastro HTML”.
- Formulário com
form, action e method.
- Pelo menos 8 campos usando input, textarea e select.
- Labels conectadas corretamente aos inputs.
- Uso correto de
id e name.
- Uso de text, email, password, number, date, checkbox, radio, textarea e select.
- Uso de
fieldset e legend.
- Campos essenciais com
required.
- Botão submit com texto claro.
- Explicação de GET vs POST e id vs name.
- Lista com pelo menos 5 boas práticas.
Erros que reprovam:
- Formulário sem label.
- Input sem name.
- Usar placeholder como substituto de label.
- Usar GET para senha.
- Radio sem name compartilhado.
- Botão com texto genérico.
- Formulário longo sem fieldset.
Quiz com gabarito
15 perguntas para provar domínio
- Qual tag inicia um formulário? <form>.
- Para que serve action? Define o destino dos dados.
- Diferença entre GET e POST? GET envia via URL; POST envia no corpo da requisição.
- O que method define? O método HTTP de envio.
- Qual atributo conecta label ao input? for ligado ao id.
- Para que serve type="password"? Mascarar caracteres digitados.
- Função do name? Identificar o dado para o servidor.
- Como criar área de texto longa? Com textarea.
- O que submit faz? Submete o formulário.
- Como criar lista de seleção? Com select e option.
- Para que serve fieldset? Agrupar campos relacionados.
- O que required faz? Impede envio com campo vazio.
- Radio do mesmo grupo precisa do quê? Mesmo name.
- Placeholder substitui label? Não.
- Input sem name envia valor? Não corretamente.
GitHub
Registre seu formulário profissional
git status
git add .
git commit -m "aula-23: cria formulario profissional de cadastro html"
git push
- git status: verifica o novo arquivo e mudanças.
- git add .: prepara o formulário para o commit.
- git commit: registra o domínio de formulários.
- git push: publica sua ferramenta de coleta de dados.
Resumo Mestre
Formulário é comunicação técnica
O form é o contêiner. O label é o guia. O input
é o coletor. O name é a identidade do dado. Sem semântica, o formulário é desenho;
com ela, é a base da web dinâmica.
Nota final: 10/10 Supremo.
Esta aula está no nível Mestre dos Mestres porque ensina a ponte real entre usuário,
navegador e servidor, preparando você para desenvolvimento full-stack.