1
//
--身份证号码验证-支持新的带x身份证
2 function isIdCardNo(num)
3 {
4 var factorArr = new Array( 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 , 6 , 3 , 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 );
5 var error;
6 var varArray = new Array();
7 var intValue;
8 var lngProduct = 0 ;
9 var intCheckDigit;
10 var intStrLen = num.length;
11 var idNumber = num;
12 // initialize
13 if ((intStrLen != 15 ) && (intStrLen != 18 )) {
14 // error = "输入身份证号码长度不对!";
15 // alert(error);
16 // frmAddUser.txtIDCard.focus();
17 return false ;
18 }
19 // check and set value
20 for (i = 0 ;i < intStrLen;i ++ ) {
21 varArray[i] = idNumber.charAt(i);
22 if ((varArray[i] < ' 0 ' || varArray[i] > ' 9 ' ) && (i != 17 )) {
23 // error = "错误的身份证号码!.";
24 // alert(error);
25 // frmAddUser.txtIDCard.focus();
26 return false ;
27 } else if (i < 17 ) {
28 varArray[i] = varArray[i] * factorArr[i];
29 }
30 }
31 if (intStrLen == 18 ) {
32 // check date
33 var date8 = idNumber.substring( 6 , 14 );
34 if (checkDate(date8) == false ) {
35 // error = "身份证中日期信息不正确!.";
36 // alert(error);
37 return false ;
38 }
39 // calculate the sum of the products
40 for (i = 0 ;i < 17 ;i ++ ) {
41 lngProduct = lngProduct + varArray[i];
42 }
43 // calculate the check digit
44 intCheckDigit = 12 - lngProduct % 11 ;
45 switch (intCheckDigit) {
46 case 10 :
47 intCheckDigit = ' X ' ;
48 break ;
49 case 11 :
50 intCheckDigit = 0 ;
51 break ;
52 case 12 :
53 intCheckDigit = 1 ;
54 break ;
55 }
56 // check last digit
57 if (varArray[ 17 ].toUpperCase() != intCheckDigit) {
58 // error = "身份证效验位错误!
正确为: " + intCheckDigit + ".";
59 // alert(error);
60 return false ;
61 }
62 }
63 else { // length is 15
64 // check date
65 var date6 = idNumber.substring( 6 , 12 );
66 if (checkDate(date6) == false ) {
67 // alert("身份证日期信息有误!.");
68 return false ;
69 }
70 }
71 // alert ("Correct.");
72 return true ;
73 }
2 function isIdCardNo(num)
3 {
4 var factorArr = new Array( 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 , 6 , 3 , 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 );
5 var error;
6 var varArray = new Array();
7 var intValue;
8 var lngProduct = 0 ;
9 var intCheckDigit;
10 var intStrLen = num.length;
11 var idNumber = num;
12 // initialize
13 if ((intStrLen != 15 ) && (intStrLen != 18 )) {
14 // error = "输入身份证号码长度不对!";
15 // alert(error);
16 // frmAddUser.txtIDCard.focus();
17 return false ;
18 }
19 // check and set value
20 for (i = 0 ;i < intStrLen;i ++ ) {
21 varArray[i] = idNumber.charAt(i);
22 if ((varArray[i] < ' 0 ' || varArray[i] > ' 9 ' ) && (i != 17 )) {
23 // error = "错误的身份证号码!.";
24 // alert(error);
25 // frmAddUser.txtIDCard.focus();
26 return false ;
27 } else if (i < 17 ) {
28 varArray[i] = varArray[i] * factorArr[i];
29 }
30 }
31 if (intStrLen == 18 ) {
32 // check date
33 var date8 = idNumber.substring( 6 , 14 );
34 if (checkDate(date8) == false ) {
35 // error = "身份证中日期信息不正确!.";
36 // alert(error);
37 return false ;
38 }
39 // calculate the sum of the products
40 for (i = 0 ;i < 17 ;i ++ ) {
41 lngProduct = lngProduct + varArray[i];
42 }
43 // calculate the check digit
44 intCheckDigit = 12 - lngProduct % 11 ;
45 switch (intCheckDigit) {
46 case 10 :
47 intCheckDigit = ' X ' ;
48 break ;
49 case 11 :
50 intCheckDigit = 0 ;
51 break ;
52 case 12 :
53 intCheckDigit = 1 ;
54 break ;
55 }
56 // check last digit
57 if (varArray[ 17 ].toUpperCase() != intCheckDigit) {
58 // error = "身份证效验位错误!

59 // alert(error);
60 return false ;
61 }
62 }
63 else { // length is 15
64 // check date
65 var date6 = idNumber.substring( 6 , 12 );
66 if (checkDate(date6) == false ) {
67 // alert("身份证日期信息有误!.");
68 return false ;
69 }
70 }
71 // alert ("Correct.");
72 return true ;
73 }