JS身份证验证 根据身份证计算生日 年龄
function isIdCardNo(str,str2,str3) { var num= document.getElementById(str).value; var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); var error; var varArray = new Array(); var intValue; var lngProduct = 0; var intCheckDigit; var intStrLen = num.length; var idNumber = num; // initialize if ((intStrLen != 15) && (intStrLen != 18)) { error = "身份證號碼長度錯誤!"; alert(error); //frmAddUser.txtIDCard.focus(); return false; } // check and set value for(i=0;i<intStrLen;i++) { varArray[i] = idNumber.charAt(i); if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) { error = "身份證號輸入錯誤!."; alert(error); //frmAddUser.txtIDCard.focus(); return false; } else if (i < 17) { varArray[i] = varArray[i]*factorArr[i]; } } if (intStrLen == 18) { //check date var date8 = idNumber.substring(6,14); if (checkDate(date8) == false) { error = "身份證中日期信息錯誤!."; alert(error); return false; } // calculate the sum of the products for(i=0;i<17;i++) { lngProduct = lngProduct + varArray[i]; } // calculate the check digit intCheckDigit = 12 - lngProduct % 11; switch (intCheckDigit) { case 10: intCheckDigit = 'X'; break; case 11: intCheckDigit = 0; break; case 12: intCheckDigit = 1; break; } // check last digit if (varArray[17].toUpperCase() != intCheckDigit) { error = "身份證有效驗證位錯誤!...正确为: " + intCheckDigit + "."; alert(error); return false; } } else{ //length is 15 //check date var date6 = idNumber.substring(6,12); if (checkDate(date6) == false) { alert("身份證日期信息有誤!."); return false; } } //以下取得生日和年齡 var s1=document.getElementById(str).value; //得到身份證號 var s2; //返回生日 var s3; //返回年齡 var birYear; var yy, mm, dd; if (s1.length == 15) { yy = s1.substr(6,2) mm = s1.substr(8,2) dd = s1.substr(10,2) if (yy < 20) { yy = '20' + yy } else { yy = '19' + yy } } else if (s1.length == 18) { yy = s1.substr(6, 4) mm = s1.substr(10, 2) dd = s1.substr(12, 2) } else { return false } var myDate = new Date(); var nowYear=myDate.getFullYear(); s2=yy + '-' + mm + '-' + dd; s3=parseInt(nowYear) -parseInt(yy); if(s2.length==10) { document.getElementById(str2).value=s2; document.getElementById(str3).value=s3; } return true ; } function GetBirthDay(txtID1, txtID2) { //如果身份證號碼正確,取出生日放到textbox中 if(isIdCardNo(txtID1)) { var s1=document.getElementById(txtID1).value; //得到身份證號 var s2; //返回生日 var s3; //返回年齡 var birYear; var myDate = new Date(); var nowYear=myDate.getFullYear; var yy, mm, dd; if (s1.length == 15) { yy = s.substr(6,2) mm = s.substr(8,2) dd = s.substr(10,2) if (yy < 20) { yy = '20' + yy } else { yy = '19' + yy } } else if (s1.length == 18) { yy = s.substr(6, 4) mm = s.substr(10, 2) dd = s.substr(12, 2) } else { return false } s2=yy + '-' + mm + '-' + dd; birYear=String(yy)+String(mm)+String(dd); s3=myDate-birYear; document.getElementById(txtID2).value; return true ; } }