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 }