Abertura de impacto
Input genérico é sensor burro
Usar type="text" para tudo é abrir mão da inteligência nativa do navegador.
O Mestre escolhe o sensor correto para cada dado: e-mail, senha, busca, número, data, telefone,
URL, arquivo, cor, intervalo e seleção.
Promessa da aula:
Você vai dominar os principais tipos de input e seus atributos de controle:
required, placeholder, value, readonly,
disabled, autocomplete, pattern,
minlength e maxlength.
Primeiros sensores
text, email, password e search
Esses campos parecem parecidos, mas comunicam intenções diferentes ao navegador, ao mobile
e às tecnologias assistivas.
<label for="nome">Nome</label>
<input type="text" id="nome" name="usuario_nome" required>
<label for="email">E-mail</label>
<input type="email" id="email" name="usuario_email" autocomplete="email" required>
<label for="senha">Senha</label>
<input type="password" id="senha" name="senha" minlength="8" required>
<label for="busca">Pesquisar</label>
<input type="search" id="busca" name="q" placeholder="Buscar aulas...">
Erro fatal:
Usar GET para senha expõe o dado na URL. Senha deve estar em formulário com
method="post" e processamento seguro no backend.
Precisão de dados
number, date, time, datetime-local, tel e url
O navegador consegue validar, restringir e adaptar o teclado mobile quando você usa o type correto.
<input type="number" name="quantidade" min="0" max="100" step="5">
<input type="date" name="data_nascimento">
<input type="time" name="horario">
<input type="datetime-local" name="agenda">
<input type="tel" name="telefone" autocomplete="tel">
<input type="url" name="portfolio" placeholder="https://meusite.com">
- number: valores matemáticos, quantidades e medidas.
- date/time: dados temporais com seletores nativos.
- tel: telefone é texto de comunicação, não número matemático.
- url: endereço web com validação básica.
Escolha e envio
checkbox, radio, file, range e color
<input type="checkbox" id="termos" name="termos" value="aceito" required>
<label for="termos">Aceito os termos</label>
<input type="radio" id="plano-basic" name="plano" value="basic">
<label for="plano-basic">Basic</label>
<input type="radio" id="plano-pro" name="plano" value="pro">
<label for="plano-pro">Pro</label>
<input type="file" name="curriculo" accept=".pdf,.doc,.docx">
<input type="range" name="satisfacao" min="1" max="5" step="1">
<input type="color" name="cor_tema" value="#38bdf8">
Erro clássico:
Radios da mesma pergunta precisam compartilhar o mesmo name. O id
muda para conectar cada label, mas o name cria a exclusão mútua.
Controle fino
Atributos essenciais de campos de entrada
required: impede envio vazio em campo essencial.
placeholder: dica temporária, nunca substitui label.
value: valor inicial ou valor enviado em opções.
readonly: impede edição, mas envia o dado.
disabled: desativa o campo e não envia o dado.
autocomplete: facilita preenchimento com dados salvos.
pattern: valida formato com expressão regular.
minlength e maxlength: controlam tamanho do texto.
<input type="text"
name="codigo"
pattern="[A-Z]{3}-[0-9]{4}"
title="Use o formato ABC-1234"
required>
<input type="text" name="pedido" value="#1234" readonly>
<input type="text" name="campo_inativo" value="Nao enviado" disabled>
Desafio Mestre
Formulário com Campos de Entrada Avançados
Missão: criar o arquivo campos-entrada-avancados.html
usando sensores especializados, validação nativa, mobile-first e acessibilidade.
Requisitos obrigatórios
- 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 com Campos de Entrada Avançados”.
- Formulário com
form, action e method.
- Labels conectadas corretamente aos campos.
- Uso correto de
id e name em todos os campos.
- Pelo menos 12 tipos diferentes de input.
- Uso de required, minlength, maxlength, autocomplete e pattern.
- Explicação de readonly vs disabled e checkbox vs radio.
- Lista com pelo menos 8 boas práticas.
Quiz com gabarito
15 perguntas para provar domínio
- O que o type="email" faz? Valida e-mail básico e otimiza o teclado mobile.
- Função do step? Define intervalo de incremento/decremento.
- readonly envia dado? Sim.
- disabled envia dado? Não.
- Para que serve type="tel"? Otimizar entrada de telefone no mobile.
- Como agrupar radios? Mesmo atributo name.
- Qual input gera calendário? type="date".
- O que search pode oferecer? Botão de limpar em alguns navegadores.
- Para que serve pattern? Validar formato com RegEx.
- type="color" retorna o quê? Código hexadecimal.
- Diferença checkbox/radio? Checkbox múltiplo; radio escolha única.
- O que minlength faz? Define mínimo de caracteres.
- Para que serve type="file"? Upload de arquivos.
- id deve ser único? Sim.
- Sem type, input vira o quê? type="text".
GitHub
Registre seu formulário avançado
git status
git add .
git commit -m "aula-24: cria formulario com campos de entrada avancados"
git push
- git status: monitora as alterações.
- git add .: adiciona o formulário avançado ao índice.
- git commit: registra o domínio sobre inputs especializados.
- git push: envia sua interface de dados para o repositório.
Resumo Mestre
O input é um sensor
Quanto mais específico o type, mais inteligente é o formulário. O Mestre usa
a tecnologia nativa do navegador para validar, proteger, acelerar e qualificar os dados desde
a primeira linha de HTML.
Nota final: 10/10 Supremo.
Esta aula está no nível Mestre dos Mestres porque abandona o HTML genérico e ensina
especialização técnica, validação nativa, mobile, acessibilidade e qualidade de informação.