Blame | Letzte Änderung | Log anzeigen | RSS feed
/** 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, element ) {"use strict";if ( this.optional( element ) ) {return true;}// Removing special characters from valuevalue = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );// Checking value to have 11 digits onlyif ( 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 dataif ( 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" );