A validação de formulários sempre foi minha parte menos favorita do desenvolvimento da Web. O senhor precisa duplicar a validação nos lados do cliente e do servidor, lidar com muitos eventos e se preocupar com o estilo do elemento do formulário. Para ajudar na validação de formulários, a especificação HTML adicionou alguns novos atributos de formulário, como required e pattern para atuar como uma validação muito básica. No entanto, o senhor sabia que pode controlar a validação nativa de formulários usando JavaScript?
validity
Cada elemento do formulário (input, por exemplo) fornece um validity que representa uma propriedade ValidityState. ValidityState é mais ou menos assim:
// input.validity
{
badInput: false,
customError: true,
patternMismatch: false,
rangeOverflow: false,
rangeUnderflow: false,
stepMismatch: false,
tooLong: false,
tooShort: false,
typeMismatch: false,
valid: false,
valueMissing: true
}
Cada propriedade no ValidityState pode corresponder aproximadamente a um problema de validação específico: valueMissing corresponderia ao required , tooLong e tooShort correspondência minLength e maxLength, etc.
Verificação da validade e definição de uma mensagem de validação personalizada
Cada campo de formulário fornece uma mensagem de erro padrão para cada tipo de erro, mas é provável que seja melhor definir uma mensagem mais personalizada para o seu aplicativo. O senhor pode usar o campo de formulário setCustomValidity do campo de formulário para criar sua própria mensagem:
// Check validity
input.checkValidity();
if(input.validity.valueMissing) {
input.setCustomValidity('This is required, bro! How did you forget?');
} else {
// Clear any previous error
input.setCustomValidity('');
}
Basta definir a mensagem por setCustomValidity não mostrar a mensagem, no entanto.
reportValidity
Para que o erro seja exibido ao usuário, use o elemento de formulário reportValidity do elemento de formulário:
// Show the error! input.reportValidity();
A dica de ferramenta de erro será imediatamente exibida na tela. O exemplo a seguir exibe o erro a cada cinco segundos:
Veja a caneta Sem título por David Walsh (@darkwing) em CodePen.
Ter ganchos no sistema de validação de formulário nativo é muito valioso e eu gostaria que os desenvolvedores o utilizassem mais. Cada site tem seu próprio estilo de validação do lado do cliente, manipulação de eventos etc. Vamos usar o que nos foi fornecido!