前台js 验证客户端输入的身份证是否合法 <html> <head> <title>身份证测试</title> </head> <body> 请输入身份证号:<input name="identityid" id="identityid" type="text" class="shopLoginMainRight0202010202010101" maxlength="18" οnblur="isIdCardNo()" /> </body> <mce:script type="text/javascript"><!-- function isIdCardNo(){ var idValue= document.getElementById("identityid").value; valueIsCard(idValue); } function valueIsCard(num){ if(num!=""){ var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); var varArray = new Array(); var intValue; var lngProduct = 0; var intCheckDigit; var intStrLen = num.length; var idNumber = num; // 判断身份证的长度 if ((intStrLen != 15) && (intStrLen != 18)) { alert("身份证号码长度不正确"); return false; } for(i=0;i<intStrLen;i++) { varArray[i] = idNumber.charAt(i); if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) { alert("身份证号码不正确"); return false; } else if (i < 17) { varArray[i] = varArray[i]*factorArr[i]; } } if (intStrLen == 18) { // 判断6到14位的日期格式是否正确 var date8 = idNumber.substring(6,14); if (checkDate(date8) == false) { alert("身份证号码不正确"); return false; } // 计算出身份证的总值 for(i=0;i<17;i++) { lngProduct = lngProduct + varArray[i]; } // 算出身份证最后一位的值 intCheckDigit = 12 - lngProduct % 11; switch (intCheckDigit) { case 10: intCheckDigit = 'X'; break; case 11: intCheckDigit = 0; break; case 12: intCheckDigit = 1; break; } // 判断身份证最后一位 if (varArray[17].toUpperCase() != intCheckDigit) { alert("身份证号码不正确"); return false; } } else{ // 若身份证长度是15位的 var date6 = idNumber.substring(6,12); if (checkDate(date6) == false) { alert("身份证号码不正确"); return false; } } alert("身份证格式正确!"); return true; } } function checkDate(date) { return true; } // --></mce:script> </html>