HTML: Formulário Estrutura, elementos e atributos

Tutorial com passos estruturados

HTML: Formulário Estrutura, elementos e atributos

Não existe aplicação web sem um formulário. Seja para login, cadastro, contato ou pesquisa, os formulários são essenciais para a interação do usuário com o site. Por isso, é fundamental entender como criar e estruturar formulários de maneira eficaz.

Os formulários são usados para coletar informações do usuário e enviá-las ao servidor para processamento. Cada elemento de formulário possui uma função específica, como capturar texto, selecionar opções, carregar arquivos ou enviar dados.

A flexibilidade dos formulários HTML faz com que sejam uma das estruturas mais complexas do HTML. Com elementos e atributos exclusivos, é possível construir qualquer tipo de formulário básico. Usar a estrutura correta ao criar um formulário HTML garante que ele seja utilizável e acessível.

Pré-Requisitos


Objetivo


O objetivo dessa tutoria é compreender como criar e estruturar formulários em HTML, explorando seus elementos e atributos de maneira semântica, para desenvolver formulários funcionais, acessíveis e úteis, alinhados às melhores práticas de desenvolvimento.

Estruturando um Formulário

O Elemento <form>

O elemento pai <form> formalmente define a estrutura do formulário e os atributos que determinam seu comportamento. Sempre que desejar criar um formulário HTML, inicie com este elemento, colocando todo o conteúdo relacionado dentro dele. Muitas tecnologias assistivas ou plugins de navegadores podem identificar este elemento e implementar recursos especiais para torná-lo mais fácil de usar.

<form action="/enviar" method="post">
  _<!-- Conteúdo do formulário -->_
</form> 

Principais atributos do <form>

  • action: Define a URL para onde os dados do formulário serão enviados para processamento, pode incluir parâmetros de consulta e outras informações. Ele determina o destino do processamento dos dados, geralmente um script no servidor (ex: .php, .asp, API)
    Exemplo: action="/enviar.php"
  • method: Especifica o método HTTP usado para enviar os dados. Os valores mais comuns são:
    • GET: Dados enviados na URL (visíveis e limitados em tamanho, método padrão).
    • POST: Dados enviados no corpo da requisição (mais seguro para dados sensíveis).
    • Exemplo: method="post"
  • enctype: Define como os dados do formulário serão codificados ao serem enviados ao servidor.
    Usado principalmente com method="post".
    Valores comuns:
    • application/x-www-form-urlencoded (padrão): Codifica todos os caracteres antes do envio. Ideal para formulários simples de texto.
    • multipart/form-data: Necessário para upload de arquivos. Envia os dados em partes, permitindo o envio de arquivos binários.
    • text/plain: Envia os dados sem codificação, não recomendado para uso geral, pois pode dificultar a interpretação pelo servidor.
  • autocomplete: (ou autopreenchimento) Controla se o navegador pode sugerir preenchimento automático dos campos. É uma funcionalidade que identifica campos padrões (nome, e-mail, endereço) e sugere dados salvos anteriormente no navegador. Valores: on (padrão) ou off. Exemplo: autocomplete="off"
  • novalidate: Ativa ou desativa a validação automática, padrão dos campos pelo navegador ao enviar o formulário. Exemplo: <form novalidate>
  • target: Especifica onde exibir a resposta após o envio, submissão do formulario. Valores padrão do Atributo Target em Form:
    • _self (Padrão): Carrega o resultado na mesma aba/janela.
    • _blank: Abre a resposta do formulário em uma nova aba ou janela.
    • _parent: Carrega a resposta no frameset pai.
    • _top: Carrega a resposta no corpo completo da janela, cancelando frames.
    • Nome/ID de Iframe: Pode-se usar o atributo name de um <iframe> para exibir a resposta dentro dele.

Organização do formulário com <fieldset> e <legend>

Os atributos <fieldset> e <legend> ajudam a agrupar campos relacionados para melhorar a legibilidade e acessibilidade do formulário.

  •  <fieldset> Agrupa campos relacionados dentro de um formulário, criando uma seção lógica e desenhando uma borda ao redor deles para melhor organização visual.
  • <legend>  Usada para definir um título ou legenda para um grupo de campos relacionados, definido pela tag
    ..
<fieldset>
  <legend>Informações Pessoais</legend>
  <label for="nome">Nome:</label>
  <input type="text" id="nome" name="nome"><br>
  <label for="email">E-mail:</label>
  <input type="email" id="email" name="email">
</fieldset>

Principais Elementos de um Formulário

Elemento <input>

O elemento HTML <input> é usado para criar controles interativos para formulários baseados na web, permitindo receber dados do usuário. A semântica de funcionalidade de um <input> varia consideravelmente dependendo do valor de seu atributo type.

Atributos Comuns do input:

  • type: Define o tipo de entrada (ex.: texto, senha, e-mail).
  • name: Identifica o campo no envio para o servidor.
  • value: Especifica o valor padrão do campo.
  • placeholder: Mostra uma dica no campo.
  • required: Torna o campo obrigatório.
  • disabled: Desativa o campo, impedindo interação.
  • readonly: Permite visualização, mas não edição.

Como usar campo de Texto - input type="text"

É um campo de texto com uma só linha; quebras de linha são automaticamente removidas do valor inserido, como nomes ou endereços.

<label for="nome">Nome:</label>
<input type="text" id="nome" name="nome" maxlength="50" placeholder="Digite seu nome" required>

Como usar campo de Senha - input type="password"

Um campo de texto com uma só linha que esconde os caracteres digitados, ideal para senhas.

<label for="senha">Senha:</label>
<input type="password" id="senha" name="senha" maxlength="20" required>

Como usar campo de E-mail - input type="email"

Valida o formato de um endereço de e-mail. O valor do campo é validado para estar vazio ou conter um único endereço de e-mail válido antes de ser enviado.

<label for="email">E-mail:</label>
<input type="email" id="email" name="email" placeholder="exemplo@dominio.com" required>

Como usar campo Numérico - input type="number"

Controle que permite inserir apenas números, inclusive números de ponto flutuante.

<label for="idade">Idade:</label>
<input type="number" id="idade" name="idade" min="0" max="120">

Como usar campo de Data - input type="date"

Abre um seletor de datas no navegador. Um controle para inserir uma data (ano, mês e dia, sem horário).

<label for="data">Data:</label>
<input type="date" id="data" name="data">

Como usar campo de Data e Hora - input type="datetime-local"

Abre um seletor de datas e horários no navegador. Um controle para inserir data e horário (hora, minuto, segundo e fração de segundo).

<label for="datahora">Data e Hora:</label>
<input type="datetime-local" id="datahora" name="datahora">

Como usar campo Upload de Arquivos - input type="file"

Um controle que permite ao usuário selecionar um arquivo. Pode usar o atributo accept para definir os tipos de arquivo que o controle pode selecionar.

<label for="arquivo">Selecione um arquivo:</label>
<input type="file" id="arquivo" name="arquivo" accept=".pdf,.doc,.docx,image/*">

Como usar campo de Telefone - input type="tel"

Controle para inserir um número de telefone. Ideal para digitar/capturar números de telefone. Pode usar atributos pattern e maxlength para restringir os valores inseridos no controle.

<label for="telefone">Telefone:</label>
<input type="tel" id="telefone" name="telefone" placeholder="(XX) XXXXX-XXXX" pattern="\(\d{2}\)\s?\d{4,5}-\d{4}" maxlength="15">

Botões de Seleção

Como usar Botões de Rádio - input type="radio"

Um botão de escolha. Permite ao usuário escolher apenas uma opção dentro de um grupo. Use o atributo checked para indicar se este item deve estar selecionado por padrão.

<p>Gênero:</p>
<input type="radio" id="masculino" name="genero" value="masculino" checked>
<label for="masculino">Masculino</label><br>
<input type="radio" id="feminino" name="genero" value="feminino">
<label for="feminino">Feminino</label>

Gênero:

Como usar caixas de Seleção - input type="checkbox"

Uma caixa de marcação. Use o atributo checked para indicar se o item está selecionado por padrão.

<p>Interesses:</p>
<input type="checkbox" id="esporte" name="interesses" value="esporte">
<label for="esporte">Esporte</label><br>
<input type="checkbox" id="musica" name="interesses" value="musica">
<label for="musica">Música</label><br>
<input type="checkbox" id="cinema" name="interesses" value="cinema">
<label for="cinema">Cinema</label>

Assunto de interesses:

Como usar campo de URL - input type="url"

Um campo para editar uma URL.

<label for="url">Site pessoal:</label>
<input type="url" id="url" name="url" placeholder="https://exemplo.com">

Como usar campo de Busca - input type="search"

Um campo de texto com uma só linha para digitar termos de busca.

<label for="search">Pesquisar:</label>
<input type="search" id="search" name="search" placeholder="Digite sua pesquisa">

Como usar o Elemento <select>

Elemento que define uma lista suspensa para seleção.

Mostrar valores simples

<label for="escolaridade">Escolaridade:</label>
<select id="escolaridade" name="escolaridade">
  <option value="medio">Ensino Médio</option>
  <option value="superior">Ensino Superior</option>
  <option value="pos">Pós-Graduação</option>
</select>

Como permitir seleções múltiplas em um select

Podemos usar o atributo multiple para permitir que o usuário selecione mais de um valor, Para seleção múltipla, é recomendado usar o atributo size para mostrar mais opções ao mesmo tempo, evitando a necessidade de rolagem:
Obs: Para selecionar múltiplas opções, o usuário pode usar Ctrl (Windows) ou Command (Mac) enquanto clica nas opções desejadas.

<label for="escolaridade">Escolaridade:</label>
<select id="escolaridade" name="escolaridade" size="3" multiple>
  <option value="medio">Ensino Médio</option>
  <option value="superior">Ensino Superior</option>
  <option value="pos">Pós-Graduação</option>
  <option value="mestrado">Mestrado</option>
</select>

Como usar campo tipo Cor - <input type="color">

<input type="color"> é usado para campos de entrada que devem conter uma cor.

<label for="favcolor">Selecione sua cor favorita:</label>
<input type="color" id="favcolor" name="favcolor" value="#ff0000">

Como usar campo tipo range - <input type="range">

É um controle deslizante que permite ao usuário selecionar um valor dentro de um intervalo definido.

<label for="range">Selecione um número entre 0 e 100:</label>
<input type="range" id="range" name="range" min="0" max="100"><br>

Como usar Elemento <textarea>

Usado para entradas de texto longas, como comentários.
O atributo rows especifica o número visível de linhas em uma área de texto.
O atributo cols especifica a largura visível de uma área de texto.

<label for="comentario">Comentário:</label>
<textarea id="comentario" name="comentario" rows="4" cols="50" placeholder="Escreva seu comentário aqui..."></textarea>

Como usar Botões


Botão de Envio - <input type="submit">

Define um botão para enviar dados de formulário.

<input type="submit" value="Enviar formulário">

Como usar Botão de Redefinição - <input type="reset">

Define um botão de reinicialização que redefinirá todos os valores do formulário para seus valores padrão (limpa o formulário).

<input type="reset" value="Limpar formulário">

Exemplo completo de como usar formulário

Neste exemplo, apresentamos um formulário completo utilizando os principais elementos do HTML. O objetivo é demonstrar como estruturar um formulário funcional, semântico e acessível, incorporando boas práticas de desenvolvimento.

Veja aqui no meu CodePen o exemplo prático.

Que aprender mais sobre, veja abaixo nossos artigos de como melhorar seus formulários, de forma prática e detalhada: o primeiro mostra como validar formulários com JavaScript, e o segundo, como estilizar com CSS3 e o terceiro, como utilizar o Bootstrap 5 para estilização e validação.

Validação de Formulários com JavaScript o Guia Básico

CSS: Como Estilizar Formulários e seus Atributos

CSS: Estilização e Validação de Formulários com Bootstrap 5

Conclusão


Agora você domina os principais elementos dos formulários em HTML! Com este conhecimento completo sobre inputs, labels, textareas, selects, buttons e validação, você está preparado para criar formulários profissionais, acessíveis e otimizados para conversão.

Os formulários bem estruturados são fundamentais para capturar dados de usuários, melhorar a experiência do visitante e aumentar as taxas de conversão do seu site. Lembre-se de sempre priorizar a acessibilidade, semântica HTML adequada e validação tanto no cliente quanto no servidor.

Próximos passos: combine este conhecimento com JavaScript para validação dinâmica e CSS para estilização responsiva. Explore também as práticas de UX/UI para melhorar ainda mais a experiência dos seus usuários ao preencher formulários.

Tem dúvidas ou precisa de ajuda com formulários mais complexos? Entre em contato comigo – estou pronto para auxiliar no desenvolvimento de soluções robustas e eficientes!

Referências


Comentários

Não foi possível carregar os comentários no momento.

Deixe seu comentário