Validação de formulários

Um formulário coleta entrada de pessoas, e pessoas deixam campos em branco, digitam incorretamente um e-mail ou colocam letras onde um número deveria estar. Você não quer que esses dados cheguem ao seu código sem verificação. Antes de qualquer coisa ser enviada, o navegador pode verificar muito disso para você, mas apenas se você descrever o que cada campo espera. Essa descrição é escrita diretamente no seu HTML, e este capítulo é sobre como escrevê-la.
Campos obrigatórios e tipos de entrada
As duas verificações mais simples que você pode adicionar são dizer que um campo deve ser preenchido e dizer que tipo de valor pertence a ele.
Adicione a palavra required a um input e o navegador recusa enviar o formulário até que esse campo tenha algo nele. Você não escreve nenhum código para fazer isso acontecer. O atributo é a instrução.
<input type="text" name="full_name" required>A outra metade é o atributo type. Ele diz ao navegador qual deve ser a forma do valor, e o navegador verifica isso para você. Use type="email" e o navegador garante que o valor pareça um endereço de e-mail. Use type="number" e ele aceita apenas números. Existe um tipo para datas, um para endereços da web e mais.
Pense nisso como um formulário em um consultório médico onde algumas caixas são marcadas como "obrigatório preencher" e a caixa de data já possui pequenos espaços para dia, mês e ano. O papel está dizendo a você o que vai aonde antes de você escrever qualquer coisa.
Aqui está um pequeno formulário de inscrição usando ambos os atributos:
<form>
<label>
Endereço de e-mail
<input type="email" name="email" required>
</label>
<label>
Site
<input type="url" name="website">
</label>
<button>Inscrever-se</button>
</form>O campo de e-mail deve ser preenchido e deve parecer um e-mail. O campo de site é opcional, mas se alguém digitar qualquer coisa, deve parecer um endereço da web. O navegador verifica ambos no momento em que o botão é pressionado.
required em um campo e o navegador não deixará um vazio passar. Defina o type, como email ou number, e ele verifica se o valor tem a forma correta. Escolha o tipo que corresponde ao campo e você recebe verificação gratuitamente. Atributos de restrição
Além de "preenchido" e "tipo correto", frequentemente você quer limites: um valor com pelo menos este comprimento, um número não maior que aquele, um código em um formato específico. Um punhado de atributos cobre isso.
Você pode definir limites sobre o que um campo aceita. Dois úteis para começar:
<input type="text" name="username" maxlength="20">
<input type="number" name="quantity" min="1" max="10">maxlength="20" para o campo uma vez que contém vinte caracteres. min e max definem o menor e o maior número permitido. O navegador mantém as pessoas dentro desses limites para que você não tenha que verificar você mesmo.
A regra que poupa a maioria das confusões: um pattern deve corresponder ao valor inteiro, não apenas parte dele.
<input
type="text"
name="product_code"
pattern="[A-Z]{2}-[0-9]{3}"
title="Duas letras, hífen, três dígitos, ex. AB-123"
required
>maxlength limita quantos caracteres entram, e min e max delimitam um número. O navegador mantém as pessoas dentro desses limites automaticamente, o que é muito verificação que você nunca tem que escrever. Feedback de validação nativa
Declarar as regras é metade da história. A outra metade é o que a pessoa vê quando um valor quebra uma.
Quando alguém pressiona o botão de envio e um campo está errado, o navegador para o envio e mostra uma pequena mensagem ao lado do primeiro campo com um problema, depois move o cursor para ele. Você não cria essa mensagem. O navegador a escreve, no idioma do visitante, e a mostra automaticamente.
Então um campo de e-mail required deixado em branco produz algo como "Preencha este campo", e o formulário não é enviado até que seja corrigido.
Quando você ainda precisa de JavaScript
A validação nativa verifica um campo em relação às suas próprias regras. Muitas verificações reais não se encaixam nessa forma, e é aí que JavaScript entra.
Algumas coisas o navegador não consegue verificar por conta própria. Se dois campos de senha correspondem um ao outro. Se um nome de usuário já foi escolhido por outra pessoa. Se um código de desconto é real. Nenhuma dessas é sobre a forma de um campo, então não há atributo para isso, e você recorre ao JavaScript para fazer a verificação.
Isso não é uma falha do HTML. As verificações integradas lidam com os casos comuns sem nenhum código, e o JavaScript lida com o resto.

