`
bhj626
  • 浏览: 21668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

身份证号码相关操作

阅读更多
<html>
<head><title>身份证男女验证</title></head>

<body>
<div>
    输入身份证号判定男女:<input id="Num" type="text" style="width:130">
        &nbsp;&nbsp;<input type="button" value=" 确定 " onclick="searchBegin()">
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        输入15位号:<input id="Num15" type="text" style="width:130" value="412723850626811">
        &nbsp;&nbsp;<input type="button" value=" 转化 " onclick="numChange()">
        &nbsp;&nbsp;转化为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>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics