前台js 验证客户端输入的身份证是否合法
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>