HTML - Controle de Formulário

-

Tipos de Controles de Formulário

O HTML oferece vários tipos de controles de formulário que permitem aos usuários interagir com formulários web e inserir dados. Vamos ver os diferentes tipos de controles de formulário disponíveis.

Campos de Entrada

Campos de entrada são o tipo mais comum de controle de formulário. Eles permitem que os usuários insiram vários tipos de dados, como texto, números e datas. Aqui estão alguns campos de entrada comumente usados:

Tipo de Campo de Entrada Descrição Elemento HTML
Texto Usado para inserir texto simples, como nomes, endereços ou comentários html <input type="text">
Senha Semelhante aos campos de entrada de texto, mas os caracteres inseridos são mascarados por motivos de segurança html <input type="password">
E-mail Projetado especificamente para inserir endereços de e-mail, com validação básica para verificar a presença do símbolo "@" e um nome de domínio html <input type="email">
Número Usado para inserir valores numéricos, geralmente com validação integrada para restringir a entrada apenas a números html <input type="number">
Data Permite que os usuários insiram datas usando um seletor de data ou digitando manualmente a data html <input type="date">

Caixas de Seleção e Botões de Opção

Caixas de seleção e botões de opção são usados quando os usuários precisam selecionar uma ou mais opções de um grupo de escolhas.

Tipo de Controle Descrição Elemento HTML
Caixa de Seleção Permite que os usuários selecionem várias opções de um grupo, cada caixa de seleção opera independentemente html <input type="checkbox">
Botão de Opção Usado quando os usuários precisam selecionar uma única opção de um grupo de escolhas mutuamente exclusivas, botões de opção com o mesmo atributo name são agrupados juntos html <input type="radio">

Listas Suspensas e Caixas de Seleção

Listas suspensas e caixas de seleção fornecem uma maneira para os usuários escolherem uma ou mais opções de uma lista predefinida.

Tipo de Controle Descrição Elemento HTML
Lista Suspensa Selecionável Exibe uma lista de opções das quais os usuários podem selecionar uma, as opções são definidas usando elementos <option> dentro do elemento <select> html <select>
Grupo de Opções Usado para agrupar opções relacionadas dentro de uma lista suspensa, fornece uma maneira de categorizar opções e melhorar a legibilidade html <optgroup>
Seleção Múltipla Adicionando o atributo multiple ao elemento <select>, os usuários podem selecionar várias opções da lista mantendo pressionada a tecla Ctrl (Windows) ou Command (Mac) enquanto clicam nas opções desejadas html <select multiple>

Botões

Botões são usados para acionar ações ou enviar formulários.

Tipo de Botão Descrição Elemento HTML
Enviar Usado para enviar dados do formulário ao servidor para processamento html <input type="submit"> ou html <button type="submit">
Redefinir Usado para redefinir os campos do formulário para seus valores padrão html <input type="reset"> ou html <button type="reset">
Botão Pode ser usado para criar botões clicáveis que podem executar ações personalizadas usando JavaScript html <button>

Áreas de Texto

Áreas de texto são usadas para inserir entrada de texto de várias linhas.

Tipo de Controle Descrição Elemento HTML
Área de Texto Fornece uma área de entrada maior para os usuários inserirem várias linhas de texto, como comentários ou descrições html <textarea>

Os atributos rows e cols podem ser usados para definir as dimensões iniciais da área de texto. O atributo rows define o número de linhas de texto visíveis, enquanto o atributo cols define a largura média dos caracteres. As áreas de texto são redimensionáveis por padrão, permitindo que os usuários ajustem o tamanho da área de entrada. O comportamento de redimensionamento pode ser controlado usando propriedades CSS como resize.

Rotulando Controles de Formulário

Rotular controles de formulário é uma parte importante da criação de formulários amigáveis e acessíveis em HTML. Os rótulos fornecem uma descrição clara do propósito de cada controle de formulário, facilitando a compreensão e interação com o formulário.

Elementos Label

O elemento <label> é usado para criar um rótulo para um controle de formulário. Ele fornece uma descrição textual associada a um controle de formulário específico, como um campo de entrada, caixa de seleção ou botão de opção. O texto do rótulo ajuda você a entender o propósito do controle de formulário e qual informação deve ser inserida ou selecionada.

Exemplo: Usando o elemento <label>

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

Neste exemplo, o elemento <label> é usado para criar um rótulo para o campo de entrada de texto. O atributo for do elemento <label> é definido como o atributo id do controle de formulário associado, estabelecendo uma conexão entre o rótulo e o campo de entrada.

Associando Rótulos aos Controles de Formulário

Para associar um rótulo a um controle de formulário, você pode usar o atributo for do elemento <label>. O valor do atributo for deve corresponder ao atributo id do controle de formulário correspondente. Isso cria uma conexão lógica entre o rótulo e o controle de formulário, permitindo que você clique no rótulo para focar no controle associado.

Exemplo: Associando um rótulo a uma caixa de seleção

<input type="checkbox" id="terms" name="terms">
<label for="terms">Eu concordo com os termos e condições</label>

Neste caso, clicar no texto do rótulo "Eu concordo com os termos e condições" alternará o estado da caixa de seleção associada.

Importância da Rotulagem para Acessibilidade

Rotular controles de formulário é importante para a acessibilidade. Isso ajuda você a entender o propósito e o contexto de cada controle de formulário ao usar tecnologias assistivas, como leitores de tela. Quando um rótulo está corretamente associado a um controle de formulário, as tecnologias assistivas podem transmitir o texto do rótulo para você, facilitando a navegação e interação com o formulário.

Além do atributo for, você também pode aninhar o controle de formulário dentro do elemento <label>. Isso associa implicitamente o rótulo ao controle aninhado, mesmo sem usar o atributo for. No entanto, usar o atributo for ainda é considerado uma boa prática para associação explícita.

Exemplo: Aninhando um botão de opção dentro de um rótulo

<label>
  <input type="radio" name="gender" value="male"> Masculino
</label>
<label>
  <input type="radio" name="gender" value="female"> Feminino
</label>

Ao rotular corretamente os controles de formulário, você torna seus formulários mais acessíveis e amigáveis para todos os usuários, incluindo aqueles que dependem de tecnologias assistivas.

Agrupando Controles de Formulário

Ao criar formulários complexos com vários controles relacionados, agrupar esses controles pode ajudar na organização e clareza. O HTML oferece os elementos <fieldset> e <legend> para agrupar e rotular controles de formulário relacionados.

Elementos Fieldset

O elemento <fieldset> agrupa controles de formulário relacionados dentro de um formulário. Ele cria um agrupamento visual e lógico dos controles, tornando o formulário mais estruturado e fácil de entender. O elemento <fieldset> contém os controles agrupados e também pode incluir uma legenda ou rótulo para o grupo usando o elemento <legend>.

Exemplo: Informações de Contato

<form>
  <fieldset>
    <legend>Informações de Contato</legend>
    <label for="name">Nome:</label>
    <input type="text" id="name" name="name"><br>
    <label for="email">Email:</label>
    <input type="email" id="email" name="email"><br>
    <label for="phone">Telefone:</label>
    <input type="tel" id="phone" name="phone">
  </fieldset>
</form>

Elementos Legend

O elemento <legend> fornece uma legenda ou rótulo para um <fieldset>. Ele aparece como um cabeçalho dentro do fieldset e descreve os controles de formulário agrupados. O elemento <legend> deve ser o primeiro filho do elemento <fieldset>.

Exemplo: Endereço de Entrega

<fieldset>
  <legend>Endereço de Entrega</legend>
  <label for="address">Endereço:</label>
  <input type="text" id="address" name="address"><br>
  <label for="city">Cidade:</label>
  <input type="text" id="city" name="city"><br>
  <label for="zip">CEP:</label>
  <input type="text" id="zip" name="zip">
</fieldset>

Agrupando Controles de Formulário Relacionados

Ao agrupar controles de formulário usando <fieldset>, considere a relação lógica entre os controles. Agrupe os controles que estão intimamente relacionados ou pertencem à mesma categoria. Isso ajuda a organizar o formulário e facilita o entendimento e preenchimento pelos usuários.

Alguns exemplos comuns de agrupamento de controles de formulário relacionados incluem:

Grupo Controles Relacionados
Informações pessoais Nome, email, telefone
Detalhes do endereço Rua, cidade, estado, CEP
Informações de pagamento Número do cartão de crédito, data de validade, CVV
Opções de envio Método de entrega, endereço de entrega

Ao agrupar controles de formulário relacionados com <fieldset> e fornecer rótulos claros com <legend>, você melhora a usabilidade e legibilidade dos seus formulários. Isso orienta os usuários pelo formulário e facilita a compreensão das informações necessárias.

Lembre-se de usar rótulos apropriados para cada controle de formulário dentro do fieldset para manter a acessibilidade e usabilidade.

Atributos de Controle de Formulário

O HTML oferece diversos atributos que podem ser usados para adicionar funcionalidades e comportamentos aos controles de formulário. Esses atributos permitem definir propriedades e restrições adicionais para os controles de formulário, melhorando a experiência do usuário e a validação de dados. Vamos ver alguns atributos de controle de formulário comumente usados.

Atributo Required

O atributo required é usado para indicar que um controle de formulário deve ser preenchido antes que o formulário possa ser enviado. Quando um controle de formulário tem o atributo required, o navegador impedirá o envio do formulário se o controle for deixado vazio ou não atender aos critérios de validação especificados.

Exemplo: Atributo Required

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

Neste exemplo, o campo de entrada de texto para o nome está marcado como obrigatório. Se você tentar enviar o formulário sem inserir um valor neste campo, o navegador mostrará uma mensagem de erro e impedirá o envio do formulário até que um valor seja fornecido.

Atributo Disabled

O atributo disabled é usado para desativar um controle de formulário, tornando-o não interativo e não editável. Controles de formulário desativados geralmente ficam acinzentados e não podem ser focados, clicados ou alterados por você.

Exemplo: Atributo Disabled

<label for="username">Nome de usuário:</label>
<input type="text" id="username" name="username" disabled>

Neste caso, o campo de entrada de texto para o nome de usuário está desativado. Você não poderá interagir ou alterar o valor deste campo.

Controles de formulário desativados não são enviados como parte dos dados do formulário quando este é submetido. Eles são ignorados durante o processamento do formulário.

Atributo Readonly

O atributo readonly é usado para tornar um controle de formulário somente leitura, o que significa que você pode ver seu valor, mas não pode alterá-lo. Controles de formulário somente leitura ainda podem receber foco e ser incluídos no envio do formulário.

Exemplo: Atributo Readonly

<label for="email">E-mail:</label>
<input type="email" id="email" name="email" value="usuario@exemplo.com" readonly>

Neste exemplo, o campo de entrada de e-mail está marcado como somente leitura. Você pode ver o valor pré-preenchido, mas não pode editá-lo.

Controles de formulário somente leitura são úteis quando você deseja mostrar valores pré-preenchidos ou calculados que não devem ser alterados por você.

Atributo Placeholder

O atributo placeholder é usado para fornecer um texto de dica ou exemplo dentro de um controle de formulário quando ele está vazio. O texto do placeholder desaparece quando você começa a digitar ou quando o controle de formulário recebe foco.

Exemplo: Atributo Placeholder

<label for="search">Pesquisar:</label>
<input type="text" id="search" name="search" placeholder="Digite o termo de pesquisa...">

Neste caso, o campo de entrada de texto para pesquisa tem um texto de placeholder "Digite o termo de pesquisa...". Este texto é mostrado dentro do campo de entrada quando ele está vazio, fornecendo uma dica visual para você sobre a entrada esperada.

Placeholders devem ser usados como uma dica suplementar e não devem substituir a rotulagem adequada dos controles de formulário. Eles são úteis para fornecer orientações ou exemplos adicionais, mas não devem ser considerados como a única forma de transmitir o propósito de um controle de formulário.

Validação de Formulário

A validação de formulário verifica a entrada do usuário para garantir que ela siga o formato esperado, atenda aos critérios e esteja livre de erros ou dados maliciosos. É uma parte importante do design de formulários web e ajuda a manter a integridade e segurança dos dados. O HTML oferece recursos de validação de formulário integrados que podem verificar a entrada do usuário no lado do cliente antes de enviar o formulário ao servidor.

A validação do lado do cliente acontece no navegador do usuário. Ela usa atributos de validação de formulário HTML e JavaScript para verificar os dados do formulário antes de serem enviados ao servidor. A validação do lado do cliente fornece feedback imediato aos usuários sobre quaisquer erros ou problemas com sua entrada, permitindo que corrijam os dados antes de enviar o formulário. Isso melhora a experiência do usuário e reduz a carga no servidor ao detectar erros comuns antecipadamente.

No entanto, a validação do lado do cliente não é suficiente por si só. Ela pode ser contornada ou manipulada pelos usuários. A validação do lado do servidor também é necessária para garantir que os dados enviados sejam válidos e seguros. A validação do lado do servidor acontece no servidor após o envio do formulário. Ela verifica novamente os dados do formulário e realiza uma validação mais completa, como verificar contra um banco de dados ou aplicar regras de negócio complexas.

O HTML oferece vários atributos de validação que podem ser adicionados aos controles de formulário para especificar regras de validação:

Atributo Descrição
required Especifica que um controle de formulário deve ser preenchido antes que o formulário possa ser enviado
pattern Especifica um padrão de expressão regular que o valor do controle de formulário deve corresponder
min e max Especifica os valores mínimo e máximo para controles de formulário numéricos
minlength e maxlength Especifica o comprimento mínimo e máximo do valor de entrada
step Especifica os intervalos numéricos legais para controles de formulário numéricos

Exemplo: Usando atributos de validação

<label for="username">Nome de usuário:</label>
<input type="text" id="username" name="username" required minlength="4" maxlength="20">

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

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

O campo de entrada do nome de usuário é obrigatório e deve ter um comprimento entre 4 e 20 caracteres. O campo de entrada de e-mail é obrigatório e deve ser um endereço de e-mail válido. O campo de entrada de idade deve ser um número entre 18 e 120.

Quando um formulário é enviado, o navegador verifica os controles do formulário de acordo com as regras de validação especificadas. Se alguma das regras não for seguida, o navegador mostra uma mensagem de erro e interrompe o envio do formulário. Os usuários podem então corrigir sua entrada e reenviar o formulário.

Além dos atributos de validação integrados do HTML, você também pode usar JavaScript para realizar validação mais complexa ou tratamento de erros personalizado. O JavaScript pode acessar controles de formulário, verificar seus valores e exibir mensagens de erro personalizadas ou executar lógica de validação adicional.

Lembre-se, embora a validação do lado do cliente melhore a experiência do usuário e detecte erros comuns, ela deve sempre ser combinada com a validação do lado do servidor para garantir a segurança e integridade dos dados enviados.

Estilizando Controles de Formulário

Os controles de formulário podem ser estilizados usando CSS para melhorar sua aparência e combinar com o design do seu site. O CSS permite que você altere a aparência dos controles de formulário para torná-los visualmente atraentes e consistentes com a identidade visual do seu site. Aqui estão algumas maneiras de estilizar controles de formulário usando CSS.

Aplicando CSS aos Controles de Formulário

Para aplicar estilos CSS aos controles de formulário, você pode usar seletores CSS para direcionar elementos específicos do formulário. Você pode selecionar controles de formulário com base em seu tipo, classe, ID ou outros atributos. Aqui estão alguns exemplos de seletores CSS para controles de formulário:

Exemplo: Seletores CSS para controles de formulário

/* Selecionando todos os elementos input */
input {
  /* Estilos CSS */
}

/* Selecionando um tipo específico de input */
input[type="text"] {
  /* Estilos CSS */
}

/* Selecionando um controle de formulário com uma classe específica */
.form-control {
  /* Estilos CSS */
}

/* Selecionando um controle de formulário com um ID específico */
#username {
  /* Estilos CSS */
}

Depois de selecionar os controles de formulário, você pode aplicar várias propriedades CSS para estilizá-los. Algumas propriedades CSS comuns usadas para estilização de controles de formulário incluem:

Propriedade CSS Descrição
width e height Define o tamanho do controle de formulário
padding Adiciona espaço dentro do controle de formulário
border Define o estilo, largura e cor da borda
background-color Define a cor de fundo do controle de formulário
color Define a cor do texto dentro do controle de formulário
font-family e font-size Define a família e o tamanho da fonte para o texto do controle de formulário

Exemplo: Estilizando elementos input

input[type="text"] {
  width: 200px;
  padding: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 16px;
}

Pseudo-classes para Estados de Controles de Formulário

O CSS fornece pseudo-classes que permitem estilizar controles de formulário com base em seus estados. Pseudo-classes são palavras-chave adicionadas aos seletores para especificar um estado especial de um elemento. Algumas pseudo-classes comumente usadas para controles de formulário são:

Pseudo-classe Descrição
:focus Aplica estilos quando o controle de formulário tem foco (está sendo interagido)
:valid Aplica estilos quando o valor do controle de formulário é válido de acordo com suas regras de validação
:invalid Aplica estilos quando o valor do controle de formulário é inválido de acordo com suas regras de validação
:disabled Aplica estilos quando o controle de formulário está desativado
:read-only Aplica estilos quando o controle de formulário é somente leitura

Exemplo: Pseudo-classes para controles de formulário

input[type="text"]:focus {
  outline: none;
  border-color: blue;
}

input[type="email"]:valid {
  border-color: green;
}

input[type="number"]:invalid {
  border-color: red;
}

input[type="text"]:disabled {
  background-color: #eee;
  cursor: not-allowed;
}

Personalizando a Aparência dos Controles de Formulário

O CSS permite que você altere a aparência dos controles de formulário além dos estilos padrão do navegador. Você pode usar propriedades e técnicas CSS para criar controles de formulário visualmente atraentes e únicos que combinem com o design do seu site.

Exemplo: Design personalizado de checkbox

input[type="checkbox"] {
  appearance: none;
  width: 20px;
  height: 20px;
  border: 2px solid #ccc;
  border-radius: 4px;
  background-color: #fff;
  transition: background-color 0.3s;
}

input[type="checkbox"]:checked {
  background-color: #007bff;
  border-color: #007bff;
}
select {
  width: 200px;
  padding: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  background-color: #fff;
  appearance: none;
  background-image: url("arrow-down.svg");
  background-repeat: no-repeat;
  background-position: right 10px center;
}

select:focus {
  outline: none;
  border-color: blue;
}