Função javascript para validar CPF

cpf
cpf

Se você está desenvolvendo uma aplicação e em algum formulário de cadastro necessita fazer a validação de um CPF informado pelo usuário, a função javascript a seguir poderá lhe ser útil

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//arquivo funcoes_cpf.js
// validador CPF
function verificarCPF(c){
    var i;
    s = c;
    var c = s.substr(0,9);
    var dv = s.substr(9,2);
    var d1 = 0;
    var v = false;
 
    for (i = 0; i < 9; i++){
        d1 += c.charAt(i)*(10-i);
    }
    if (d1 == 0){
        alert("CPF Inválido")
        v = true;
        return false;
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(0) != d1){
        alert("CPF Inválido")
        v = true;
        return false;
    }
 
    d1 *= 2;
    for (i = 0; i < 9; i++){
        d1 += c.charAt(i)*(11-i);
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(1) != d1){
        alert("CPF Inválido")
        v = true;
        return false;
    }
    if (!v) {
        alert(c + "nCPF Válido")
    }
}

Essa função faz todas as comparações com dígitos e cálculos necessários para validar um cadastro de pessoas físicas registradas no Brasil. Para executá-la basta passar o cpf como parâmetro(sem os pontos e traço). Veja um exemplo de sua aplicabilidade.

1
2
3
4
5
6
7
8
9
10
11
12
<html>
  <head>
    <title>CPF</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="funcoes_cpf.js"></script>
  </head>
  <body>
    <form name="form1">
        CPF: <input type="text" name="cpf" maxlength="11" onblur="return verificarCPF(this.value)"/>
    </form>
  </body>
</html>

No formulario HTML eu coloquei um campo de texto que aceita no máximo 11 caracteres porque esse é o número de dígitos contidos nos CPFs. Para testar coloque um CPF qualquer(Ex: 12332112332) e depois coloque um CPF válido. Quando você sai do campo ele executa a função e alerta uma mensagem na tela informando se é valido ou não.

Lembrando que validações javascript são feitas via cliente, ou seja, no navegador do usuário que está utilizando o sistema. Para que essa validação fique mais blindada à más intenções é bom que tenha uma função semelhante desenvolvida em uma linguagem que rode do lado do servidor (java, php, etc.).

Até a próxima.

Abs.

Siga-me no twitter: @rafaelwendel

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

      1. Sobre a linha 5:

        Seria legal colocar um var na declaração da variável “s” evitando que este valor seja declarado no escopo global onde esta função será executada.

  1. Meu código não ta dendo o erro dos dígitos, como faço p consertar?

    Pé na Estrada

    function validaForm(){
    d = document.cadastro;//cadastro e o nome do form. troque a seu gosto

    //validar nome lembrando que nome é o nome do campo. troque a seu gosto
    if (d.Telefone.value == “” || d.Telefone.value.length < 8){
    alert("O campo " + d.Telefone.name + " telefone fixo tem de ter 8 dígitos!");
    d.Telefone.focus();
    return false;
    }

    //validar Telefone(verificacao se contem apenas numeros)
    if (isNaN(d.Telefone.value)){
    alert ("O campo " + d.Telefone.name + " deve conter apenas numeros!");
    d.Telefone.focus();
    return false;
    }

    //validar Cpf(verificacao se contem apenas numeros)
    if (isNaN(d.Cpf.value)){
    alert ("O campo " + d.Cpf.name + " só pode ter dígitos. caracter inválido!");
    d.Cpf.focus();
    return false;
    }
    //validar Cpf 11 digitos. troque a seu gosto
    if (d.Cpf.value == "" || d.Cpf.value.length < 11){
    alert("O campo " + d.Telefone.name + " cpf fixo tem de ter 11 dígitos!");
    d.Cpf.focus();
    return false;
    }

    function calculaDV(num)

    val = 0;

    //Calcula o penúltimo dígito verificador
    for (i=0; i < 9; i )
    val = parseInt(cpf.charAt(i)) * (10 – i);

    rev = 11 – (val % 11);

    if (rev == 10 || rev == 11)
    rev = 0;

    //Retorna falso se o dígito calculado eh diferente do passado na string
    if (rev != parseInt(cpf.charAt(9)))
    return false;

    //Calcula o último dígito verificador
    val = 0;
    for (i = 0; i < 10; i )
    val = parseInt(cpf.charAt(i)) * (11 – i);

    rev = 11 – (val % 11);

    if (rev == 10 || rev == 11)
    rev = 0;{
    alert("O campo " + d.Telefone.name + " dígito Inválido!");
    d.Cpf.focus();
    return false;
    }

    //Retorna falso se o dígito calculado for diferente do passado na string
    if (rev != parseInt(cpf.charAt(10)))
    return false;

    //Cpf válido
    return true;

    }

    }

    Destinos

    Pacotes

    Cadastro

    Reservas

    Dados de Identificação
    Email:
    Senha:
    Confirme:

    Nome:

    Cpf :

    Telefone:

    Celular:

    Data de nascimento: (dd/mm/yyyy)

    Sexo

    Feminino

    Masculino

    Estrada da Mochila 234

    Tel: (21) 1234-5678

    contato@penaestrada.com.br

  2. Boa noite,
    eu criei essa função em javascript e tentei “chamá-la” da mesma forma que você, mas não foi!
    Estou fazendo da seguinte forma

    e também não está indo, o que pode ser?

  3. Obrigada pelo código. Foi super válido na minha aplicação.
    Peço ajuda para um problema: ao digitar o CPF, mesmo sendo VÁLIDO, está apresentando como CPF inválido.
    O que posso fazer para que não apareça esse erro?
    Obrigada!

      1. Obrigada por retornar, Rafael!
        Digitei apenas os números, mas não deu certo…
        Pode ser por ter máscara? Ou não interfere?
        Alguma sugestão?

        Abs.

        1. Olá Fabiana,

          Se está usando máscara, provavelmente ele está indo com pontos e traço. Dê um alert dentro da função “verificarCPF” para ver como o CPF está indo.

          1
          2
          3
          4
          5
          
          //arquivo funcoes_cpf.js
          // validador CPF
          function verificarCPF(c){
                  alert(c);
                  //... continuação da funcao...

          Abs!

Deixe um comentário

O seu endereço de e-mail não será publicado.