Início

Responsive Web Development

UA3 — Formulários HTML5

HTML5 expandiu o elemento form com novos tipos de input e validação nativa no navegador, sem precisar de JavaScript.

Estrutura de um formulário

<form action="/enviar" method="post">

  <label for="nome">Nome:</label>
  <input type="text" id="nome" name="nome" required>

  <label for="email">E-mail:</label>
  <input type="email" id="email" name="email" required>

  <button type="submit">Enviar</button>
</form>

Novos tipos de input em HTML5

Controles HTML5 com validação nativa
Controles HTML5 com validação nativa
typeO que fazValidação automática
emailCampo de e-mailVerifica formato name@domain
urlCampo de URLVerifica formato http://…
numberNúmero com spinnermin, max, step
rangeSlider numéricomin, max, step
dateSeletor de dataFormato e intervalo
timeSeletor de horaFormato HH:MM
colorSeletor de corRetorna valor hex
telTelefoneTeclado numérico no mobile
searchCampo de buscaBotão limpar nativo

Atributos de validação

<!-- Obrigatório -->
<input type="text" required>

<!-- Comprimento mínimo/máximo -->
<input type="text" minlength="3" maxlength="50">

<!-- Intervalo numérico -->
<input type="number" min="1" max="100" step="5">

<!-- Padrão regex -->
<input type="text" pattern="[0-9]{5}-[0-9]{3}" placeholder="00000-000">

Outros elementos de formulário

<!-- Seleção -->
<select name="estado">
  <option value="sc">Santa Catarina</option>
  <option value="sp">São Paulo</option>
</select>

<!-- Área de texto -->
<textarea name="msg" rows="4" cols="40"></textarea>

<!-- Checkbox -->
<input type="checkbox" name="aceito" id="aceito">
<label for="aceito">Aceito os termos</label>

GET vs POST no formulário

method="get" — dados na URL (visível, para buscas). method="post" — dados no body da requisição (para dados sensíveis, cadastros).

Atributos da tag <form>

A tag form: tubulação entre página e servidor
A tag form: tubulação entre página e servidor
AtributoO que fazValores / Observações
nameNome do formulárioIdentifica o form no documento (útil quando há mais de um)
actionURL de destino dos dadosSe omitido, envia para a própria página
methodMétodo HTTP de envioget (na URL) | post (no corpo)
autocompleteAutocompletar navegadoron (padrão) | off
targetOnde exibir a resposta_self | _blank | _parent | _top | nome do iframe
enctypeCodificação dos dadosapplication/x-www-form-urlencoded (padrão) | multipart/form-data (upload) | text/plain
novalidateDesativa validação HTML5Atributo booleano (sem valor)

Tipos de <input> — completo

typeO que éDetalhe
textTexto livreAceita qualquer caractere
passwordSenhaOculta os caracteres digitados
fileUpload de arquivoExibe botão para selecionar arquivo
hiddenCampo ocultoInvisível ao usuário, mas enviado ao servidor
radioMúltipla escolha únicaMesmo name = grupo, escolha exclusiva
checkboxMúltipla escolha múltiplaPermite marcar vários itens
emailE-mailValida formato name@domain
numberNúmeroAceita min, max, step
rangeSliderSeleção visual de intervalo
dateDataExibe calendário nativo
monthMês/anoSeleciona mês e ano
weekSemana/anoSeleciona número da semana
timeHoraMáscara HH:MM automática
colorCorRetorna valor hexadecimal
telTelefoneTeclado numérico no mobile
searchBuscaBotão de limpar nativo
urlURLValida formato http://…

Botões

ElementoFunção
<button type=“submit”>Envia os dados do formulário ao servidor
<button type=“reset”>Limpa todos os campos do formulário
<button type=“button”>Botão genérico — ação definida via JavaScript
<input type=“submit”>Equivalente ao button submit (forma legada)

Atributos de validação e controle

AtributoEfeitoExemplo
requiredCampo obrigatório<input required>
placeholderTexto de dica dentro do campoplaceholder=“00000-000”
autofocusFoco automático ao carregar a página<input autofocus>
readonlyCampo visível mas não editável<input readonly> — valor enviado
disabledCampo desabilitado<input disabled> — valor NÃO enviado
minlength / maxlengthLimita caracteresminlength=“3” maxlength=“50”
min / max / stepLimita intervalo numéricomin=“0” max=“10” step=“0.5”
patternRegex de validaçãopattern=“[0-9]{’{‘}5}-[0-9]{’{‘}3}“
titleMensagem de dica na validaçãotitle=“Digite um CEP válido”

Práticas Modernas — Formulários

Constraint Validation API: via JavaScript, input.checkValidity() retorna true/false e input.validationMessage traz a mensagem de erro — permite mensagens de validação customizadas sem remover a validação nativa. ARIA em formulários: use aria-describedby para associar mensagens de erro ao campo, e aria-required="true" para campos obrigatórios — leitores de tela precisam disso. Validação client-side ≠ segurança: validação HTML5 é UX, não segurança. Sempre valide também no servidor — nunca confie apenas no browser.

Dicas para a prova — UA3

  • Formulários HTML são usados para agrupar elementos de uma página com o objetivo de captar ou disponibilizar informações.
  • A interação cliente-servidor em formulários se dá por solicitação e resposta.
  • method="get" → dados visíveis na URL após o ?. method="post" → dados no corpo da requisição (invisíveis).
  • type="hidden" → campo invisível ao usuário, mas seu valor é enviado ao servidor normalmente.
  • readonly → impede edição mas o valor é enviado. disabled → impede edição e o valor NÃO é enviado.
  • radio → só um item pode ser selecionado. checkbox → múltiplos itens podem ser selecionados.
  • enctype="multipart/form-data" é obrigatório para upload de arquivos.

Referências bibliográficas desta UA

  • Saraiva, M. O. Desenvolvimento de Sistemas com PHP. Porto Alegre: SAGAH, 2018.
  • Crowther, B. et al. HTML5 e CSS3. 2014.