A API de validação de restrições
Leia estados de validade e verifique restrições com JavaScript.
A API de validação de restrições é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.
Validação sem JavaScript
O HTML5 introduziu a validação integrada de formulários por meio dos atributos: required, type="email", type="number", min, max, pattern, minlength, maxlength. O navegador valida automaticamente ao enviar o formulário e exibe mensagens de erro, sem exigir JS.
<input type="email" name="email" required>
<input type="number" name="age" min="18" max="120" required>
<input type="text" name="phone" pattern="\d{10}" required>Seletores CSS de validação
:invalid corresponde aos campos de entrada que falham na validação; :valid corresponde aos campos aprovados. :user-invalid (moderno) corresponde apenas depois da interação do usuário, evitando bordas vermelhas em um formulário ainda sem interação. Estilize os erros com essas pseudo-classes.
input:user-invalid {
border-color: red;
}
input:user-invalid + .error {
display: block;
}O objeto ValidityState
Todo controle de formulário expõe uma propriedade validity — um objeto ValidityState com indicadores booleanos: valid, valueMissing, typeMismatch, patternMismatch, rangeUnderflow, tooShort etc. Inspecione-o para decidir qual erro exibir.
const input = form.querySelector("input[type=email]");
if (input.validity.typeMismatch) {
showError(input, "Please enter a valid email address");
}Método checkValidity
input.checkValidity() retorna true se o valor satisfaz todas as restrições e false caso contrário. form.checkValidity() verifica o formulário inteiro. Isso é útil para verificações programáticas antes de executar AJAX ou permitir que o usuário avance em um assistente.
Método reportValidity
input.reportValidity() funciona como checkValidity, mas também aciona a dica de ferramenta integrada do navegador e focaliza o primeiro campo inválido. Use-o quando quiser uma interface nativa sem trabalho adicional; use checkValidity quando quiser uma exibição de erros totalmente personalizada.
Personalização das mensagens integradas
As mensagens padrão do navegador ("Preencha este campo") podem não corresponder ao seu tom ou idioma. Substitua-as com input.setCustomValidity("Enter a valid coupon code"). O campo de entrada permanecerá inválido até que você limpe a mensagem com setCustomValidity("").
novalidate desativa a interface do navegador
Adicione novalidate ao formulário para suprimir o comportamento padrão de validação do navegador. Isso é útil ao implementar uma exibição de erros totalmente personalizada — o formulário ainda será enviado, independentemente de ter passado ou não na validação; portanto, faça uma verificação programática antes do envio.
Escutando eventos invalid
Cada controle dispara um evento invalid quando a validação falha. Escute-o para suprimir a dica de ferramenta padrão e exibir uma mensagem personalizada: input.addEventListener("invalid", (e) => { e.preventDefault(); showError(input); }).
pattern com expressões regulares
O atributo pattern contém uma expressão regular de JavaScript à qual o valor deve corresponder completamente (não é necessário usar as âncoras ^ e $ — elas são implícitas). Combine-o com o atributo title para descrever o formato esperado aos usuários.
A validação no servidor continua necessária
A validação do HTML é uma conveniência para os usuários; qualquer pessoa que edite o DOM pode ignorá-la. Sempre valide novamente no servidor. As restrições do HTML existem para melhorar a experiência do usuário (retorno imediato e menos idas e voltas à rede), não para garantir segurança.
Combinando várias restrições
As restrições se acumulam: <input type="number" min="18" max="120" required step="1"> deve estar preenchido, conter um número inteiro e ficar entre 18 e 120. O navegador informa qual restrição específica falhou por meio dos indicadores de ValidityState, para que você possa exibir a mensagem correta.
Verificação de conhecimento
Em que o pseudo-seletor CSS :user-invalid difere de :invalid?
Resumo
Os atributos de validação nativos (required, type, pattern, min, max), juntamente com a API ValidityState, oferecem uma validação poderosa no lado do cliente, sem JS por padrão. CSS :user-invalid estiliza os erros depois da interação. checkValidity/reportValidity executam verificações programáticas. setCustomValidity substitui as mensagens padrão. Sempre valide novamente no servidor.
Perguntas Frequentes
A aula “A API de validação de restrições” é grátis?
Sim — o texto completo de “A API de validação de restrições” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.
O que vou aprender em “A API de validação de restrições”?
Leia estados de validade e verifique restrições com JavaScript. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar HTML Academy?
Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “A API de validação de restrições”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de HTML Academy?
Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- A API FormData
- A API de validação de restrições
- reportValidity e setCustomValidity
- Eventos de redefinição de formulário e gerenciamento de estado