發一個身份證驗證的javascript在此

 //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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章