撰写时间:2019年2月25日星期六
身份证验证,这里这个验证功能就是根据身份证号的组成进行判断验证:公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码,顺序码表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。.校验码根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码,通过对这些数字的判断,然后就可以判断当前输入的这个身份证是什么地区的,哪年哪月哪日出生的,是男是男是女,是不是有效的身份证号,随便打打一个格式正确的身份证也是会识别出来不是有效的身份证号。下面要说的主要就验证身份证的性别,跟是否为有效身份证号。
两个验证,自动识别男女,如果不是真实有效的身份证号显示不是有效的身份证。代码如下:
//=================================== 判断身份证性别 =====================================
function showBirthday(val) {
if (15 == val.length) { //15位身份证号码
if (parseInt(val.charAt(14) / 2) * 2 != val.charAt(14))
document.all.Write_Sex.value = '男', $("#Sex").empty().append('男');
else
document.all.Write_Sex.value = '女', $("#Sex").empty().append('女');
}
if (18 == val.length) { //18位身份证号码
if (parseInt(val.charAt(16) / 2) * 2 != val.charAt(16))
document.all.Write_Sex.value = '男', $("#Sex").empty().append('男');
else
document.all.Write_Sex.value = '女', $("#Sex").empty().append('女');
if (val.charAt(17) != IDCard(val)) {
$("#TS").html("不是有效身份证!");
}
else {
//document.all.Write_IDNumber.style.backgroundColor = 'white';
$("#TS").html("");
}
}
if (15 != val.length && 18 != val.length) {
$("#TS").html("不是有效身份证!");
}
if (0 == val.length) {
$("#TS").html("");
}
if (RealNameCertificationID != 0) {
if (15 == val.length) { //15位身份证号码
if (parseInt(val.charAt(14) / 2) * 2 != val.charAt(14))
document.all.Sex.value = '男', $("#Sex").empty().append('男');
else
document.all.Sex.value = '女', $("#Sex").empty().append('女');
}
if (18 == val.length) { //18位身份证号码
if (parseInt(val.charAt(16) / 2) * 2 != val.charAt(16))
document.all.Sex.value = '男', $("#Sex").empty().append('男');
else
document.all.Sex.value = '女', $("#Sex").empty().append('女');
}
}
}
//=================================== 18位身份证号最后一位校验 =====================================
function IDCard(Num) {
if (Num.length != 18)
return false;
var x = 0;
var y = ''; for (i = 18; i >= 2; i--)
x = x + (square(2, (i - 1)) % 11) * parseInt(Num.charAt(19 - i - 1));
x %= 11;
y = 12 - x;
if (x == 0)
y = '1';
if (x == 1)
y = '0';
if (x == 2)
y = 'X';
return y;
}
//=================================== 求得x的y次方 =====================================
function square(x, y) {
var i = 1;
for (j = 1; j <= y; j++)
i *= x;
return i;
}
这段代码基本就是一些判断,根据身份证的组成判断,对身份证的验证码进行计算验证。
如果需要识别地区的话自行根据需要判断前六位数得出地区信息