Blame view

bower_components/jquery-validation/src/additional/cpfBR.js 1.65 KB
4c373a79   Administrator   ашкые
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  /*
   * 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" );