Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
with
72 additions
and 1 deletion.
- +57 −0 src/additional/cpfBR.js
- +2 −1 src/localization/messages_pt_BR.js
- +13 −0 test/methods.js
@@ -0,0 +1,57 @@ | ||
/* | ||
* Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number. | ||
* CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation. | ||
*/ | ||
$.validator.addMethod("cpfBR", function(value) { | ||
// Removing special characters from value | ||
value = value.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, ""); | ||
|
||
// Checking value to have 11 digits only | ||
if (value.length !== 11) { | ||
return false; | ||
} | ||
|
||
var sum = 0, | ||
firstCN, secondCN, checkResult, i; | ||
|
||
firstCN = parseInt(value.substring(9, 10), 10); | ||
secondCN = parseInt(value.substring(10, 11), 10); | ||
|
||
checkResult = function(sum, cn) { | ||
var result = (sum * 10) % 11; | ||
if ((result === 10) || (result === 11)) {result = 0;} | ||
return (result === cn); | ||
}; | ||
|
||
// Checking for dump data | ||
if (value === "" || | ||
value === "00000000000" || | ||
value === "11111111111" || | ||
value === "22222222222" || | ||
value === "33333333333" || | ||
value === "44444444444" || | ||
value === "55555555555" || | ||
value === "66666666666" || | ||
value === "77777777777" || | ||
value === "88888888888" || | ||
value === "99999999999" | ||
) { | ||
return false; | ||
} | ||
|
||
// Step 1 - using first Check Number: | ||
for ( i = 1; i <= 9; i++ ) { | ||
sum = sum + parseInt(value.substring(i - 1, i), 10) * (11 - i); | ||
} | ||
|
||
// If first Check Number (CN) is valid, move to Step 2 - using second Check Number: | ||
if ( checkResult(sum, firstCN) ) { | ||
sum = 0; | ||
for ( i = 1; i <= 10; i++ ) { | ||
sum = sum + parseInt(value.substring(i - 1, i), 10) * (12 - i); | ||
} | ||
return checkResult(sum, secondCN); | ||
} | ||
return false; | ||
|
||
}, "Please specify a valid CPF number"); |