Validação de formulários em JavaScript

Âmbito

Atualmente, a validação de formulários em JavaScript é muito utilizada para garantir que os dados solicitados nos campos que o utilizador preenche em qualquer site sejam fiéis ao que o programador deseja. A validação de dados por meio de programação JavaScript é feita no browser (sem necessidade de ir até o servidor para transmitir dados) e garante a consistência dos dados quando são enviados para a base de dados.

A validação no cliente é necessária em várias situações: quando, por exemplo, o utilizador não preencheu corretamente o seu e-mail e colocou 2 invés de @. Se esta validação for no cliente, o utilizador recebe a mensagem de e-mail inválido antes do formulário ser enviado. A validação no cliente melhora a interação do utilizador com o site, mas é claro, que as validações no servidor também devem ser feitas.

Introdução

Neste artigo apresento um script completo que exemplifica a validação de um formulário em JavaScript.

Primeiro é necessário criar o formulário que contém os campos a serem validados.

Código HTML

Segue abaixo o código HTML para criar o formulário.

<form name="frmTeste" method="post" action="#" onsubmit="return validaForm(this);">
  <p>Validação de formulário</p>
  <p>Nome: <input type="text" name="nome" id="nome" /></p>
  <p>Email: <input type="text" name="email" id="email" /></p>
  <p>Sexo:
    <label><input type="radio" name="sexo" value="M" id="masc" /> Masculino</label>
   <label><input type="radio" name="sexo" value="F" id="masc" /> Feminino</label>
  </p>
  <p>Profissão
    <select name="cargo">
      <option value="">Selecione o cargo</option>
      <option value="programador">Programador</option>
      <option value="designer">Designer</option>
      <option value="tester">Tester</option>
      <option value="todas">Todas</option>
   </select>
  </p><label><input type="submit" name="sbt" value="Enviar" /></label></p>
</form>

O código acima deve ser colocado dentro do corpo do documento <body> </body>. Na tag form o evento onSubmit chama uma função denominada validaForm que é responsável pela validação dos dados do formulário. Se os dados estiverem corretos a função retorna true e o formulário é enviado. Caso contrário é mostrada uma mensagem que determina o local do erro.

Código JavaScript

Segue abaixo o código de validação em JavaScript. Este código deve ser colocado dentro do cabeçalho do documento <head> </head>.

<script type="text/javascript">
function validaForm(frm) {
/*
o parâmetro frm desta função significa: this.form,
pois a chamada da função - validaForm(this) foi
definida na tag form.
*/
    //Verifica se o campo nome foi preenchido e
    //contém no mínimo três caracteres.
    if(frm.nome.value == """ || frm.nome.value == null || frm.nome.value.lenght < 3) {
        //É mostrado um alerta, caso o campo esteja vazio.
        alert("Por favor, indique o seu nome.");
        //Foi definido um focus no campo.
        frm.nome.focus();
        //o form não é enviado.
        return false;
    }
    //o campo e-mail precisa de conter: "@", "." e não pode estar vazio
    if(frm.email.value.indexOf("@") == -1 ||
      frm.email.valueOf.indexOf(".") == -1 ||
      frm.email.value == "" ||
      frm.email.value == null) {
        alert("Por favor, indique um e-mail válido.");
        frm.email.focus();
        return false;
    }
    // O utilizador necessita de selecionar um dos dois
    //radio buttons: Masculino ou Feminino.
    escolhaSexo = -1; //valor negativo default (padrão) que significa que nada foi escolhido ainda.
    //No bloco de código abaixo foi criado um ciclo entre
    //os radios button com o mesmo nome (sexo)
    for(x = frm.sexo.lenght -1; x > -1; x--) {
        /*
        x = frm.sexo.lenght -1 é a mesma coisa que: x = 2-
        1, que resulta em 1.
        x > -1 significa que o valor de x não pode ser igual a -1 e
        sim maior, porque -1 significa que nada foi escolhido.
        x-- significa que há um decremento no valor x, é algo como:
        x = 1, x= 0 e pára pois x não pode ser -1.
        */
        if(frm.sexo[x].checked) { //checked quer dizer selecionado,
           //então verifica se o primeiro (0) ou o
           //segundo (1) radio button foi selecionado (checked).
           escolhaSexo = x; //atribui à variável escolhaSexo o valor X.
        }
    }
    //se nenhuma das opções (masculino ou feminino) forem
    //escolhidas, mostra um alerta e cancela o envio.
    if(escolhaSexo == -1) {
        alert("qual o seu sexo?");
        frm.sexo[0].focus();
        return false;
    }
    /* valida a profissão:
    O utilizador tem de escolher uma entre as três opções
    (Programador, Designer e Tester).
    */
    if(frm.prof.value == "" || from.prof.value == "Todas") {
        alert("De momento, precisamos de especialistas nas três áreas indicadas");
        frm.prof.focus();
        return false;
    }
    //Valida a textArea, que é como validar um campo de texto simples.
    if(frm.sobre.value == "" || frm.sobre.value == null) {
        alert("Por favor, conte-nos um pouco sobre si.");
        frm.sobre.focus();
        return false;
    }
}
</script>

Conclusão

Esta foi uma breve demonstração de como podemos implementar validações para os nossos formulários HTML usando apenas JavaScript.

É importante realçar que a validação de formulários que são submetidos ao servidor web não deve depender apenas de JavaScript no lado cliente, pois não se pode assegurar que o recurso esteja ativado e a funcionar corretamente em todos os browsers. Implementada ou não a validação em JavaScript, deve sempre haver a validação dos dados recebidos no servidor da aplicação. O uso de validação via JavaScript cliente serve essencialmente para facilitar a pré-validação no lado cliente, possibilitando ao utilizador ter os seus dados verificados ainda antes de submeter o formulário.

Publicado na edição 51 (PDF) da Revista PROGRAMAR.