Created
September 27, 2016 15:41
-
-
Save fjcunha/29807a5009bf30301fea1b2cf535645a to your computer and use it in GitHub Desktop.
jQuery validator methods to validate cpf and cnpj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jQuery.validator.addMethod("cnpj", function (value, element) { | |
var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais; | |
if (value.length == 0) { | |
return false; | |
} | |
value = value.replace(/\D+/g, ''); | |
digitos_iguais = 1; | |
for (i = 0; i < value.length - 1; i++) | |
if (value.charAt(i) != value.charAt(i + 1)) { | |
digitos_iguais = 0; | |
break; | |
} | |
if (digitos_iguais) | |
return false; | |
tamanho = value.length - 2; | |
numeros = value.substring(0, tamanho); | |
digitos = value.substring(tamanho); | |
soma = 0; | |
pos = tamanho - 7; | |
for (i = tamanho; i >= 1; i--) { | |
soma += numeros.charAt(tamanho - i) * pos--; | |
if (pos < 2) | |
pos = 9; | |
} | |
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; | |
if (resultado != digitos.charAt(0)) { | |
return false; | |
} | |
tamanho = tamanho + 1; | |
numeros = value.substring(0, tamanho); | |
soma = 0; | |
pos = tamanho - 7; | |
for (i = tamanho; i >= 1; i--) { | |
soma += numeros.charAt(tamanho - i) * pos--; | |
if (pos < 2) | |
pos = 9; | |
} | |
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; | |
return (resultado == digitos.charAt(1)); | |
}) | |
jQuery.validator.addMethod("cpf", function (value, element) { | |
value = jQuery.trim(value); | |
value = value.replace('.', ''); | |
value = value.replace('.', ''); | |
cpf = value.replace('-', ''); | |
while (cpf.length < 11) cpf = "0" + cpf; | |
var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/; | |
var a = []; | |
var b = new Number; | |
var c = 11; | |
for (i = 0; i < 11; i++) { | |
a[i] = cpf.charAt(i); | |
if (i < 9) b += (a[i] * --c); | |
} | |
if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11 - x } | |
b = 0; | |
c = 11; | |
for (y = 0; y < 10; y++) b += (a[y] * c--); | |
if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11 - x; } | |
if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false; | |
return true; | |
}, "Informe um CPF válido."); // Mensagem padrão |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment