Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // validação de CPF
- function validacpf(el) {
- // pego o valor do campo a ser verificado
- var value = el.val();
- // removo os pontos e traços
- value = value.replace(".", "");
- value = value.replace("-", "");
- value = value.replace(".", "");
- /*
- Aqui eu verifico algumas condições:
- - se o valor informado não tem 11 dígitos
- - se o valor informado é algum padrão burro (números repetidos)
- */
- if (value.length != 11 ||
- value == "00000000000" ||
- value == "11111111111" ||
- value == "22222222222" ||
- value == "33333333333" ||
- value == "44444444444" ||
- value == "55555555555" ||
- value == "66666666666" ||
- value == "77777777777" ||
- value == "88888888888" ||
- value == "99999999999") {
- // caso seja algum dos casos acima, adiciona a classe de erro na label do meu campo
- el.parents('label').addClass('error');
- // return false para parar a execução do código
- return false;
- } else {
- /*
- caso passe na validação anterior, inicia a conta para conferir
- o dígito verificador do CPF.
- Inicialmente, soma-se todos os números (exceto o dígito verificador),
- multiplicando antes cada um deles de 10 a 2.
- */
- var soma = 0;
- // primeiro dígito * 10
- soma = soma + (parseInt(value.substring(0, 1))) * 10;
- // primeiro dígito + (segundo dígitop * 9)
- soma = soma + (parseInt(value.substring(1, 2))) * 9;
- // etc
- soma = soma + (parseInt(value.substring(2, 3))) * 8;
- soma = soma + (parseInt(value.substring(3, 4))) * 7;
- soma = soma + (parseInt(value.substring(4, 5))) * 6;
- soma = soma + (parseInt(value.substring(5, 6))) * 5;
- soma = soma + (parseInt(value.substring(6, 7))) * 4;
- soma = soma + (parseInt(value.substring(7, 8))) * 3;
- soma = soma + (parseInt(value.substring(8, 9))) * 2;
- }
- /*
- pega-se a noma anterior, multiplica-se por 10 e divide-se por 11.
- Aqui, usamos a função de módulo (%) em vez da divisão.
- Isso porque o que realmente interessa ra gente é o resto da divisão
- */
- var resto1 = (soma * 10) % 11;
- /*
- se o resto da divisão for 10 ou 11, o primeiro´número do
- dígito verificador é 0
- */
- if ((resto1 == 10) || (resto1 == 11)) {
- resto1 = 0;
- }
- /*
- Agora, soma-se todos os números (exceto o último número do dígito verificador),
- multiplicando antes cada um deles de 11 a 2.
- */
- var soma = 0;
- soma = soma + (parseInt(value.substring(0, 1))) * 11;
- soma = soma + (parseInt(value.substring(1, 2))) * 10;
- soma = soma + (parseInt(value.substring(2, 3))) * 9;
- soma = soma + (parseInt(value.substring(3, 4))) * 8;
- soma = soma + (parseInt(value.substring(4, 5))) * 7;
- soma = soma + (parseInt(value.substring(5, 6))) * 6;
- soma = soma + (parseInt(value.substring(6, 7))) * 5;
- soma = soma + (parseInt(value.substring(7, 8))) * 4;
- soma = soma + (parseInt(value.substring(8, 9))) * 3;
- soma = soma + (parseInt(value.substring(9, 10))) * 2;
- /*
- pega-se a noma anterior, multiplica-se por 10 e divide-se por 11.
- Aqui, usamos a função de módulo (%) em vez da divisão.
- Isso porque o que realmente interessa ra gente é o resto da divisão
- */
- var resto2 = (soma * 10) % 11;
- /*
- se o resto da nossa segunda divisão for 10 ou 11, o segundo número do
- dígito verificador é 0
- */
- if ((resto2 == 10) || (resto2 == 11)) {
- resto2 = 0;
- }
- // verifica se os números encontrados do dígito verificado existem e se estão na posição correta
- if (
- (resto1 == (parseInt(value.substring(9, 10)))) &&
- (resto2 == (parseInt(value.substring(10, 11))))) {
- // cpf válido, remove-se a classe de erro
- el.parents('label').removeClass('error');
- return true;
- } else {
- // cpf inválido, adiciona-se a classe de erro
- el.parents('label').addClass('error');
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement