发一个身份证验证的javascript在此

来源:互联网 发布:淘宝预售全款规则 编辑:程序博客网 时间:2024/05/02 01:00

 //idcard身份证号文本框,birthdayId出生日期文本框,genderId(性别Radiobutton的ID)

//对输入的身份证号进行验证,并根据身份证号自动生成出生日期和性别

function CheckIDCard(idcard,birthdayId,genderId)
{
var aCity = {11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",
31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",
44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",
63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
var flag = false;
var val1 = idcard.value;
var len = val1.length;
var birthday="";
if(len == 0)
{
return;
}
if(len == 15)
{
if(!/^/d{15}$/i.test(val1))
{
flag = false;
}
else if(aCity[parseInt(val1.substr(0,2))] == null)
{
flag = false;
}
else
{
val1 = ChangeIDCard(val1);
birthday = val1.substr(6,4)+"-"+Number(val1.substr(10,2))+"-"+Number(val1.substr(12,2));
var d = new Date(birthday.replace(/-/g,"/"));
if(birthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" +d.getDate()))
{
flag = false;
}
else
{
flag = VerifyIDCard(val1);
}
}
}
else if(len == 18)
{
if(!/^/d{17}(/d|x)$/i.test(val1))
{
flag = false;
}
else if(aCity[parseInt(val1.substr(0,2))] == null)
{
flag = false;
}
else
{
birthday = val1.substr(6,4)+"-"+Number(val1.substr(10,2))+"-"+Number(val1.substr(12,2));
var d = new Date(birthday.replace(/-/g,"/"));
if(birthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" +d.getDate()))
{
flag = false;
}
else
{
flag = VerifyIDCard(val1);
}
}
}
else
{
flag = false;
}
if(flag)
{
if(len == 18)
{
if(val1.substr(17,1) == 'x')
{
idcard.value = val1.substr(0,17) + 'X';
}
}
var gender = parseInt(val1.substr(16,1)%2);
if(gender == 0) gender = 2;
if(gender == 1) gender = 1;
birthdayId.value = birthday;
for(var i=0;i<2;i++)
{
var tGender = document.getElementById(genderId.id + "_" + i);
if(tGender.value == gender)
{
tGender.checked = true;
}
}
}
else
{
alert("身份证号输入有误!");
idcard.value = "";
}
}

//将15位身份证号转换为18位 

function ChangeIDCard(id15)
{
var arrInt = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
var arrVerify = new Array('1','0','X','9','8','7','6','5','4','3','2');
var nTemp = 0;
var tempID = id15.substr(0,6) + '19' + id15.substr(6,9);
var len2 = tempID.length;
for(var i=0;i<len2;i++)
{
nTemp += parseInt(tempID.substr(i,1)) * arrInt[i];
}
tempID += arrVerify[nTemp % 11];
return tempID;
}

//对18位的身份证号进行校验
function VerifyIDCard(id18)
{
var flag = false;
var iSum = 0;
id18 = id18.replace(/x$/i,"a");
for(var i=17;i>=0;i--)
{
iSum += (Math.pow(2,i) % 11) * parseInt(id18.charAt(17-i),11);

}
if(iSum%11!=1)
{
flag = false;
}
else
{
flag = true;
}
return flag;
}

 

原创粉丝点击