近日在写一个系统,找到些身份证验证代码,先放在这里,备忘!
//以下代码是我在论坛里面问问题的一部分,后来问题没有最终解决,我更改成另外一种方法了。
//以下代码是我在论坛里面问问题的一部分,后来问题没有最终解决,我更改成另外一种方法了。
function
isChinaIDCard(StrNo)
{
StrNo = JHshLTrim(StrNo);
StrNo = JHshRTrim(StrNo);
StrNo = StrNo.toString();
// alert(StrNo.length)
if (StrNo.length == 18)
{
var a, b, c;
if (!isInteger(StrNo.substr(0, 17)))
{
document.myform.CardNo.focus();
return false;
}
a = parseInt(StrNo.substr(0, 1)) * 7+parseInt(StrNo.substr(1, 1)) * 9 +parseInt(StrNo.substr(2, 1)) * 10;
a = a + parseInt(StrNo.substr(3, 1)) * 5+parseInt(StrNo.substr(4, 1)) * 8+parseInt(StrNo.substr(5, 1)) * 4;
a = a + parseInt(StrNo.substr(6, 1)) * 2+parseInt(StrNo.substr(7, 1)) * 1+parseInt(StrNo.substr(8, 1)) * 6;
a = a + parseInt(StrNo.substr(9, 1)) * 3+parseInt(StrNo.substr(10, 1)) * 7+parseInt(StrNo.substr(11, 1)) * 9;
a = a + parseInt(StrNo.substr(12, 1)) * 10+parseInt(StrNo.substr(13, 1)) * 5+parseInt(StrNo.substr(14, 1)) * 8;
a = a + parseInt(StrNo.substr(15, 1)) * 4+parseInt(StrNo.substr(16, 1)) * 2;
b = a % 11;
if (b == 2)
//最后一位为校验位
{
c = StrNo.substr(17, 1).toUpperCase(); //转为大写X
}
else
{
c = parseInt(StrNo.substr(17, 1));
}
switch (b)
{
case 0:
if (c != 1)
{
alert("身份证好号码校验位错:最后一位应该为:1");
document.myform.CardNo.focus();
return false;
}
break;
case 1:
if (c != 0)
{
alert("身份证好号码校验位错:最后一位应该为:0");
document.myform.CardNo.focus();
return false;
}
break;
case 2:
if (c != "X")
{
alert("身份证好号码校验位错:最后一位应该为:X");
document.myform.CardNo.focus();
return false;
}
break;
case 3:
if (c != 9)
{
alert("身份证好号码校验位错:最后一位应该为:9");
document.myform.CardNo.focus();
return false;
}
break;
case 4:
if (c != 8)
{
alert("身份证好号码校验位错:最后一位应该为:8");
document.myform.CardNo.focus();
return false;
}
break;
case 5:
if (c != 7)
{
alert("身份证好号码校验位错:最后一位应该为:7");
document.myform.CardNo.focus();
return false;
}
break;
case 6:
if (c != 6)
{
alert("身份证好号码校验位错:最后一位应该为:6");
document.myform.CardNo.focus();
return false;
}
break;
case 7:
if (c != 5)
{
alert("身份证好号码校验位错:最后一位应该为:5");
document.myform.CardNo.focus();
return false;
}
break;
case 8:
if (c != 4)
{
alert("身份证好号码校验位错:最后一位应该为:4");
document.myform.CardNo.focus();
return false;
}
break;
case 9:
if (c != 3)
{
alert("身份证好号码校验位错:最后一位应该为:3");
document.myform.CardNo.focus();
return false;
}
break;
case 10:
if (c != 2)
{
alert("身份证好号码校验位错:最后一位应该为:2");
document.myform.CardNo.focus();
return false
}
}
}
else if(StrNo.length==15)
//15位身份证号
{
if (!isInteger(StrNo))
{
alert("身份证号码错误,前15位不能含有英文字母!");
document.myform.CardNo.focus();
return false;
}
}
{
StrNo = JHshLTrim(StrNo);
StrNo = JHshRTrim(StrNo);
StrNo = StrNo.toString();
// alert(StrNo.length)
if (StrNo.length == 18)
{
var a, b, c;
if (!isInteger(StrNo.substr(0, 17)))
{
document.myform.CardNo.focus();
return false;
}
a = parseInt(StrNo.substr(0, 1)) * 7+parseInt(StrNo.substr(1, 1)) * 9 +parseInt(StrNo.substr(2, 1)) * 10;
a = a + parseInt(StrNo.substr(3, 1)) * 5+parseInt(StrNo.substr(4, 1)) * 8+parseInt(StrNo.substr(5, 1)) * 4;
a = a + parseInt(StrNo.substr(6, 1)) * 2+parseInt(StrNo.substr(7, 1)) * 1+parseInt(StrNo.substr(8, 1)) * 6;
a = a + parseInt(StrNo.substr(9, 1)) * 3+parseInt(StrNo.substr(10, 1)) * 7+parseInt(StrNo.substr(11, 1)) * 9;
a = a + parseInt(StrNo.substr(12, 1)) * 10+parseInt(StrNo.substr(13, 1)) * 5+parseInt(StrNo.substr(14, 1)) * 8;
a = a + parseInt(StrNo.substr(15, 1)) * 4+parseInt(StrNo.substr(16, 1)) * 2;
b = a % 11;
if (b == 2)
//最后一位为校验位
{
c = StrNo.substr(17, 1).toUpperCase(); //转为大写X
}
else
{
c = parseInt(StrNo.substr(17, 1));
}
switch (b)
{
case 0:
if (c != 1)
{
alert("身份证好号码校验位错:最后一位应该为:1");
document.myform.CardNo.focus();
return false;
}
break;
case 1:
if (c != 0)
{
alert("身份证好号码校验位错:最后一位应该为:0");
document.myform.CardNo.focus();
return false;
}
break;
case 2:
if (c != "X")
{
alert("身份证好号码校验位错:最后一位应该为:X");
document.myform.CardNo.focus();
return false;
}
break;
case 3:
if (c != 9)
{
alert("身份证好号码校验位错:最后一位应该为:9");
document.myform.CardNo.focus();
return false;
}
break;
case 4:
if (c != 8)
{
alert("身份证好号码校验位错:最后一位应该为:8");
document.myform.CardNo.focus();
return false;
}
break;
case 5:
if (c != 7)
{
alert("身份证好号码校验位错:最后一位应该为:7");
document.myform.CardNo.focus();
return false;
}
break;
case 6:
if (c != 6)
{
alert("身份证好号码校验位错:最后一位应该为:6");
document.myform.CardNo.focus();
return false;
}
break;
case 7:
if (c != 5)
{
alert("身份证好号码校验位错:最后一位应该为:5");
document.myform.CardNo.focus();
return false;
}
break;
case 8:
if (c != 4)
{
alert("身份证好号码校验位错:最后一位应该为:4");
document.myform.CardNo.focus();
return false;
}
break;
case 9:
if (c != 3)
{
alert("身份证好号码校验位错:最后一位应该为:3");
document.myform.CardNo.focus();
return false;
}
break;
case 10:
if (c != 2)
{
alert("身份证好号码校验位错:最后一位应该为:2");
document.myform.CardNo.focus();
return false
}
}
}
else if(StrNo.length==15)
//15位身份证号
{
if (!isInteger(StrNo))
{
alert("身份证号码错误,前15位不能含有英文字母!");
document.myform.CardNo.focus();
return false;
}
}