-
-
Save larbous/47393dc45d683b8de38a17b613c40849 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)); | |
}, "Informe um CNPJ válido."); // Mensagem padrão | |
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