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?

Deixe uma resposta para Marcos Martinewski Alves Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *