<html>
<head><title>身份证男女验证</title></head>
<body>
<div>
输入身份证号判定男女:<input id="Num" type="text" style="width:130">
<input type="button" value=" 确定 " onclick="searchBegin()">
<br>
输入15位号:<input id="Num15" type="text" style="width:130" value="412723850626811">
<input type="button" value=" 转化 " onclick="numChange()">
转化为18位号:<input id="Num18" type="text" style="width:130" value="412723198506268117">
</div>
<script language="JavaScript">
/**
*Statement: 调用相应的函数,检测输入的身份证号,并给出错误提示
*/
function searchBegin(){
var myNum=document.getElementById("Num");
var myStr=myNum.value;
if(!checkNum(myStr)){
alert("对不起,您输入的身份证号码有误!");
return;
}
if(genderJudge(myStr)){alert("该身份证号户主为男性!");}
else
{alert("该身份证号户主为女性!");}
}
/**
*Statement: 用正则表达式检测输入的身份证号格式是否正确。如果位18位号并判别校验码
*param: num 要检测的身份证号
*return 返回true代表号码格式正确 false错误 // ____ 待定
*/
function checkNum(num){
var myNum=num+""; //将myNum转化为String,方便正则匹配
var tag=false; //返回tag=1代表长度错误,tag=2代表格式错误,tag=0代表身份证号输入正确
if(myNum.match(/^(:\d{15}|\d{18}|\d{17}X)$/))tag=true;
if(myNum.length==18){ //检测校验位
var num17=myNum.substring(0,18);
if(myNum.charAt(17)!=lastByte(myNum))tag=false;
}
return tag;
}
/**
*Statement: 输入身份证号,判别该户主性别是男或女?
*Param: num 身份证号
*return: 返回true代表男性,false代表女性
*/
function genderJudge(num){ //程序调用前必须确保身份证号的格式是正确的
var myNum=num+""; //接收传递的身份证号码
var ch;
var tag; //标志,true为男,false为女
if(myNum.length==15){
ch=myNum.charAt(14);
if(ch%2==1)tag=true; //15位号最后一位为奇数是男士
}
else {
ch=myNum.charAt(16);
if(ch%2==1)tag=true; //18位号第17位为奇数是男士
}
return tag;
}
/**
*Statement: 将15位身份证号转变为18位
*Param: num 原有的身份证号
*return String 转化后的身份证号
*/
function numChange(){
var myNum=document.getElementById("Num15").value;
var result;
if(myNum.length==18)result=myNum;
else { //如果为15位
//15位号转18位号在第6-7位之间插入两个数字 “19”
var forth17Num=myNum.substring(0,6)+"19"+myNum.substring(6,15);
}
var ch=lastByte(forth17Num);
result=forth17Num+ch;
document.getElementById("Num18").value=result;
return result;
}
/**
*Statement: 用身份证的前17位计算出最后一位验证码
*param num 身份证前17位
*return char 计算得出的一位校验码
*/
function lastByte(num){
var myNum=num;
var lastNumber;
var getNum=eval(myNum.charAt(0)*7+myNum.charAt(1)*9+myNum.charAt(2)*10+myNum.charAt(3)*5+myNum.charAt(4)*8+myNum.charAt(5)*4+myNum.charAt(6)*2+myNum.charAt(7)*1+myNum.charAt(8)*6+myNum.charAt(9)*3+myNum.charAt(10)*7+myNum.charAt(11)*9+myNum.charAt(12)*10+myNum.charAt(13)*5+myNum.charAt(14)*8+myNum.charAt(15)*4+myNum.charAt(16)*2);
getNum=getNum%11;
switch (getNum) {
case 0 : lastNumber="1"; break;
case 1 : lastNumber="0"; break;
case 2 : lastNumber="X"; break;
case 3 : lastNumber="9"; break;
case 4 : lastNumber="8"; break;
case 5 : lastNumber="7"; break;
case 6 : lastNumber="6"; break;
case 7 : lastNumber="5"; break;
case 8 : lastNumber="4"; break;
case 9 : lastNumber="3"; break;
case 10 : lastNumber="2"; break;
}
return lastNumber;
}
</script>
</body>
身份证号码相关操作
最新推荐文章于 2024-07-23 20:15:52 发布