Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1. // validação de CPF
  2. function validacpf(el) {
  3. // pego o valor do campo a ser verificado
  4. var value = el.val();
  5.  
  6. // removo os pontos e traços
  7. value = value.replace(".", "");
  8. value = value.replace("-", "");
  9. value = value.replace(".", "");
  10.  
  11. /*
  12. Aqui eu verifico algumas condições:
  13. - se o valor informado não tem 11 dígitos
  14. - se o valor informado é algum padrão burro (números repetidos)
  15. */
  16. if (value.length != 11 ||
  17. value == "00000000000" ||
  18. value == "11111111111" ||
  19. value == "22222222222" ||
  20. value == "33333333333" ||
  21. value == "44444444444" ||
  22. value == "55555555555" ||
  23. value == "66666666666" ||
  24. value == "77777777777" ||
  25. value == "88888888888" ||
  26. value == "99999999999") {
  27.  
  28. // caso seja algum dos casos acima, adiciona a classe de erro na label do meu campo
  29. el.parents('label').addClass('error');
  30.  
  31. // return false para parar a execução do código
  32. return false;
  33. } else {
  34. /*
  35. caso passe na validação anterior, inicia a conta para conferir
  36. o dígito verificador do CPF.
  37.  
  38. Inicialmente, soma-se todos os números (exceto o dígito verificador),
  39. multiplicando antes cada um deles de 10 a 2.
  40.  
  41. */
  42. var soma = 0;
  43. // primeiro dígito * 10
  44. soma = soma + (parseInt(value.substring(0, 1))) * 10;
  45. // primeiro dígito + (segundo dígitop * 9)
  46. soma = soma + (parseInt(value.substring(1, 2))) * 9;
  47. // etc
  48. soma = soma + (parseInt(value.substring(2, 3))) * 8;
  49. soma = soma + (parseInt(value.substring(3, 4))) * 7;
  50. soma = soma + (parseInt(value.substring(4, 5))) * 6;
  51. soma = soma + (parseInt(value.substring(5, 6))) * 5;
  52. soma = soma + (parseInt(value.substring(6, 7))) * 4;
  53. soma = soma + (parseInt(value.substring(7, 8))) * 3;
  54. soma = soma + (parseInt(value.substring(8, 9))) * 2;
  55. }
  56.  
  57. /*
  58. pega-se a noma anterior, multiplica-se por 10 e divide-se por 11.
  59. Aqui, usamos a função de módulo (%) em vez da divisão.
  60. Isso porque o que realmente interessa ra gente é o resto da divisão
  61. */
  62. var resto1 = (soma * 10) % 11;
  63.  
  64. /*
  65. se o resto da divisão for 10 ou 11, o primeiro´número do
  66. dígito verificador é 0
  67. */
  68. if ((resto1 == 10) || (resto1 == 11)) {
  69. resto1 = 0;
  70. }
  71.  
  72.  
  73. /*
  74. Agora, soma-se todos os números (exceto o último número do dígito verificador),
  75. multiplicando antes cada um deles de 11 a 2.
  76. */
  77. var soma = 0;
  78. soma = soma + (parseInt(value.substring(0, 1))) * 11;
  79. soma = soma + (parseInt(value.substring(1, 2))) * 10;
  80. soma = soma + (parseInt(value.substring(2, 3))) * 9;
  81. soma = soma + (parseInt(value.substring(3, 4))) * 8;
  82. soma = soma + (parseInt(value.substring(4, 5))) * 7;
  83. soma = soma + (parseInt(value.substring(5, 6))) * 6;
  84. soma = soma + (parseInt(value.substring(6, 7))) * 5;
  85. soma = soma + (parseInt(value.substring(7, 8))) * 4;
  86. soma = soma + (parseInt(value.substring(8, 9))) * 3;
  87. soma = soma + (parseInt(value.substring(9, 10))) * 2;
  88.  
  89. /*
  90. pega-se a noma anterior, multiplica-se por 10 e divide-se por 11.
  91. Aqui, usamos a função de módulo (%) em vez da divisão.
  92. Isso porque o que realmente interessa ra gente é o resto da divisão
  93. */
  94. var resto2 = (soma * 10) % 11;
  95.  
  96. /*
  97. se o resto da nossa segunda divisão for 10 ou 11, o segundo número do
  98. dígito verificador é 0
  99. */
  100. if ((resto2 == 10) || (resto2 == 11)) {
  101. resto2 = 0;
  102. }
  103.  
  104.  
  105. // verifica se os números encontrados do dígito verificado existem e se estão na posição correta
  106. if (
  107. (resto1 == (parseInt(value.substring(9, 10)))) &&
  108. (resto2 == (parseInt(value.substring(10, 11))))) {
  109.  
  110. // cpf válido, remove-se a classe de erro
  111. el.parents('label').removeClass('error');
  112. return true;
  113. } else {
  114.  
  115. // cpf inválido, adiciona-se a classe de erro
  116. el.parents('label').addClass('error');
  117. return false;
  118. }
  119.  
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement