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
Como ter esse código de validação do CPF, com essa função somente em HTML é possível?
Olá Fábio,
Infelizmente não, pois a função precisa realizar cálculos. E isso não é possível com HTML puro.
Abs!
Na 5ª linha o ‘s’ é uma variavel?” ( está assim s = c; …. esse ‘s’ veio de onde?);
É isso mesmo Vitor,
Ele replica o valor da variável c na variável s para que ele possa “repartir” o CPF e analisar cada dígito (caractere).
Abs!
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.
bom dia , o =”c” é o parâmetro recebido na função verificarCPF(c) , o cpf digitado no html
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
A função está errada. Se você preencher com “11111111111”, ou seja, 11 vezes o número 1 o validador aceita como um CPF válido.
Abs!
A função está errada, como o colega disse acima, valida um cpf inválido.
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?
essa função é em asp ou asp.net ?
Olá Mário,
É JavaScript. Pode ser usado junto com HTMl puro, PHP, ASP, ASP.NET, etc.
Abs!
como ficaria para formatar com “.” e “-“? parabens otimo conteudo
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!
Olá Fabiana,
Eu acabei de testar, e deu certo quando insere um CPF válido. Lembre-se que você deve colocar apenas os dígitos (sem pontos e traços).
Abs!
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.
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.
Abs!