技术开发 频道

JavaScript身份证号码验证-支持新的带x身份证


【IT168技术文档】

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 }
0
相关文章