Validar Formulário usando JavaScript

Validar Formulário usando JavaScriptOlá pessoal, hoje vou demonstrar como podemos validar campos de um formulário usando JavaScript puro, sem usar a biblioteca jQuery.

Já faz um tempo que venho “ensaiando” para escrever algo sobre JavaScript, trabalho diariamente com jQuery mas em certas situações uso também JavaScript, principalmente em scripts onde não existe necessidade de carregar a biblioteca jQuery para funcionalidades simples.

Umas dessas funcionalidades é a validação de formulários HTML no fron-end, onde podemos escrever desde regras básicas até mais complexas de validação usando JavaScript puro.

 

Vantagens da Validação com JavaScript

1 – É muito comum encontrar programadores afirmando que preferem escrever a validação de dados apenas uma vez nos scripts back-end. Mas essa prática pode tornar a experiência do usuário “dolorosa” dependendo da banda de internet, pois dessa maneira o usuário tem que enviar o formulário para o servidor e aguardar alguns segundos (dependendo da banda de internet) para saber se existem dados inválidos ou não. Nesse caso é sempre aconselhável escrever primeiro uma validação no front-end com JavaScript ou qualquer biblioteca, podendo retornar um feedback quase que instantaneamente para o usuário sobre possíveis dados inválidos, pois essas instruções serão executadas no próprio browser. Mesmo assim devemos escrever também as validações no back-end, essa é uma prática de segurança importante.

2 – Talvez esse tema seja um dos mais discutidos em eventos front-end atualmente, existe uma mistura de “amor” e “ódio” com a famosa biblioteca jQuery, que realmente traz muitas facilidades para a escrita de códigos complexos com menos linhas, porém existem vários benchmarks na WEB afirmando o quanto seu desempenho pode ser ruim em determinadas situações e durante o carregamento da página. Nesse caso escrevendo as instruções com JavaScript puro estamos dispensando o uso da biblioteca jQuery, pois o JavaScript roda em 99,9% dos navegadores atualmente.

 

Validar Formulário usando JavaScript

Para esse post montei um formulário com alguns campos e utilizei o framework Bootstrap para estilizar meu formulário. O objetivo é validar todos os campos e caso seja detectado que existem dados inválidos será exibida uma mensagem informativa logo abaixo do respectivo input, serão escritas 9 tipos de validações:

  1. Verificar se o campo NOME está vazio
  2. Verificar se o campo E-MAIL está vazio
  3. Validar o formato do E-MAIL
  4. Verificar se foi selecionado um valor para o campo SEXO
  5. Verificar se o campo SENHA está vazio
  6. Verificar se o campo SENHA possui no mínimo 6 caracteres
  7. Verificar se o campo REPITA SENHA está vazio
  8. Verificar se o campo REPITA SENHA possui no mínimo 6 caracteres
  9. Verificar se o campo SENHA é igual ao campo REPITA SENHA

 

Abaixo segue a página index.php, usei a extensão “.php” mas poderia ser “.html” pois essa página não possui comandos em PHP.

O código acima é bem simples, praticamente todas as regras de formatação vem do bootstrap, 3 itens merecem atenção:

1 – Dentro da tag <head> adicionei apenas uma regra CSS, usando a classe “.msg-erro” para indicar que todas as mensagens serão exibidas na cor vermelha.

 

2 – Abaixo dos inputs e do select coloquei um <span> para exibir as mensagens quando forem necessárias.

 

3 – Seguindo as boas práticas coloquei todo o código JavaScript em um arquivo separado custom.js e apenas chamei no final da página.

 

Agora vamos para o arquivo JavaScript contendo todas as instruções necessárias para validação do formulário.

Nesse script escrevi a função “validaCadastro()” e dentro dela executo todas as verificações, essa função é atribuída para o evento “submit” do formulário. Quando for pressionado o botão submit da página a função será executada e conforme o resultado da validação ela pode cancelar a submissão ou enviar o formulário para gravação.

Alguns pontos de destaque:

1 – O método getElementById() retorna uma referência ao elemento cujo ID foi informado via parâmetro, nesse caso estou capturando o form mas essa função foi utilizada para referenciar todos os inputs, por questões de performance é sempre bom cachear a referência de um elemento usando variáveis.

 

2 – Nesse ponto estou atribuindo a função “validaCadastro()” para o evento “submit” do form, no “mundo perfeito” poderíamos usar apenas o método addEventListener() para essa finalidade, mas para o I.E. 8 e seus anteriores é necessário chamar um método proprietário attachEvent() que realiza a mesma função mas temos que passar como parâmetro o nome do evento seguindo a sintaxe HTML “onsubmit”.

 

3 – Aqui estou atribuindo uma string contendo uma expressão regular para validar o formato do e-mail, essa expressão será testada com a função filtro.test(email), se passar então é válido o formato.

 

4 – O método document.querySelector() retorna o primeiro elemento encontrado com o mesmo nome da classe CSS que foi passada via parâmetro, eu poderia ter utilizado IDs e capturado o elemento com a função getElementById() mas achei melhor diversificar um pouco. Esse método foi utilizado para capturar os elementos onde serão exibidas as mensagens de erro, observem que os valores dos parâmetros são iguais aos nomes de classes utilizadas nas tags <span> abaixo dos inputs. 

 

5 – Se for detectado que o valor de um campo é inválido então incremento o valor da variável contErro, ao final da função verifico se essa variável é maior que zero. Se o valor for maior significa que foi encontrado um erro então temos que cancelar o comportamento padrão do form que seria submeter a página para gravação, para isso chamamos o método evt.preventDefault(), caso o valor da função seja zero então a submissão ocorre naturalmente.

 

Agora vamos para o resultado final do formulário, primeiro sem pressionar o botão “Gravar”:

Fomulário sem Validação

 

Agora pressionando o botão “Gravar” com todos campos vazios:

Fomulário com Validação

 

Observem como fica mais intuitivo para o usuário identificar onde existem erros, é sempre bom reforçar que as validações tem que serem feitas no front-end e no back-end. Sabemos que o javascript pode ser desabilitado nos navegadores ocasionando uma brecha de segurança nas submissões de nossos formulários caso não existam validações no back-end.

 

Assista o Vídeo complementar ao post

 

Bom pessoal nesse post demonstrei como podemos escrever validações para os nossos formulários HTML usando somente JavaScript e sem o uso da biblioteca jQuery, é claro que essa validação pode ser melhorada de diversas maneiras e conforme a necessidade da aplicação, mas deixo isso para o leitor.

Se você gostou desse post compartilhe nas redes sociais, até a próxima …

Show Buttons
Hide Buttons