TEST

上一篇 / 下一篇  2019-01-22 19:58:03 / 个人分类:Test

<html>

<head>
<meta. http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>批量生成18位身份证号码</title>
<script. language="JavaScript">

var areaCode = {
'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':'新疆'
}

/**删除左右两端的空格**/
function trim(str) {
    return str.replace(/(^\s*)|(\s*$)/g, "");
}

/**根据15位身份证或者18位身份证的前17位生成18位身份证号码*/
function getCheckID(_pid) {
    var arrVerifyCode = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];
    var wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    if (_pid.length != 15 && _pid.length != 17) return(false);
    var ai = (_pid.length == 17) ? _pid : _pid.substr(0,6) + "19" + _pid.substr(6);
    if (!/^\d+$/.test(ai)) 
{ alert(ai);
return(false);}
    var yyyy = ai.substr(6, 4), mm = ai.substr(10, 2) - 1, dd = ai.substr(12, 2);
    var d = new Date(yyyy,mm,dd), year = d.getFullYear(), mon = d.getMonth(), day = d.getDate(), now = new Date();
    if (year != yyyy || mon != mm || day != dd || d > now || now.getFullYear() - year > 140) return(false);
    for(var i = 0, ret = 0; i < 17; i++) ret += ai.charAt(i) * wi[i];
    ai += arrVerifyCode[ret %= 11];
    return(ai);
}

/**判断输入的15位或者18位身份证号码是否合法*/
function ParseID(pId) {
    var arrVerifyCode = [1, 0, "x", 9, 8, 7, 6, 5, 4, 3, 2];
    var wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    if (pId.length != 15 && pId.length != 18) return("身份证号码只能是15位或18位!");
    var ai = (pId.length == 18) ? pId.substr(0,17) : pId.substr(0,6) + "19" + pId.substr(6);
    if (!/^\d+$/.test(ai)) return("身份证除最后一位外,必须为数字!");
    var yyyy = ai.substr(6, 4), mm = ai.substr(10, 2) - 1, dd = ai.substr(12, 2);
    var d = new Date(yyyy,mm,dd), year = d.getFullYear(), mon = d.getMonth(), day = d.getDate(), now = new Date();
    if (year != yyyy || mon != mm || day != dd || d > now || now.getFullYear() - year > 140) return("身份证出生年月日输入错误!");
    for(var i = 0, ret = 0; i < 17; i++) ret += ai.charAt(i) * wi[i];
    ai += arrVerifyCode[ret %= 11];
    return ((pId.length == 18 && pId.toLowerCase() != ai) ? "身份证输入错误,正确的为\n" + ai + "!" : ai);
}

/**根据身份证取 省份,生日,性别*/
function getInfo(pid) {    
    _id = ParseID(pid);
    if (isNaN(_id.substr(0, 17))) return "错误的身份证号码" ;
    var _id = String(_id), sex = _id.substr(16, 1) % 2 ? "男" : "女";
    prov = areaCode[_id.substr(0,2)] || "无法确定";
    var birthday = (new Date(_id.substr(6,4), _id.substr(10,2) - 1, _id.substr(12,2))).toLocaleDateString() ;
    return [prov,birthday,sex];
}

/**生成一定范围的随机数*/
function fRandomBy(under, over){ 
    switch(arguments.length){ 
        case 1: 
            return parseInt(Math.random() * under+1); 
        case 2: 
            return parseInt(Math.random() * (over-under+1) + under);  
        default: 
            return 0;
    }
}

/**随机生成一个身份证*/
function RandomCreateID() {
    function _RandomCreateID() {
        var aid=0 ,ac = null, yyyy = 0, mm = 0, dd = 0, rnd = 0;
aid=""+document.getElementById("ar").value;

if (aid!=""){
l=aid.length;
   for (i=0;i<6-l;i++){
aid="1" +aid;
}
}
else{
   aid=""+ fRandomBy(11,65) + fRandomBy(0,9)+ fRandomBy(0,9)+ fRandomBy(0,9)+ fRandomBy(0,9);
}
//alert("aid:"+aid);
        yyyy = fRandomBy(1960,1990), mm = fRandomBy(1,12), dd = fRandomBy(1,31);
        rnd = ""+fRandomBy(0,9)+ fRandomBy(0,9)+ fRandomBy(0,9);
//alert("id0:"+ mm +"id0:"+ dd );
//直接用mm后值会变成true或false,因为第二种写法的问题。
//if ( (mm == 2) && (dd > 28) )   if ( mm == 2 && dd > 28 )
if ( (mm == 2) && (dd > 28) ) {
dd = fRandomBy(1,28);
}
else if (((mm == 4)||(mm == 6)||(mm == 9)||(mm == 11))&&(dd == 31))  {
dd = dd-1;
}
        mm = (mm < 10) ? ("0" + mm) : mm;
        dd = (dd < 10) ? ("0" + dd) : dd;
        return("" + aid + yyyy + mm + dd + rnd);
    }
    
    var ff = false;
    var ct =0;
    while (!ff) {
        ct++;
        ff = getCheckID(_RandomCreateID());
if (ct=200){
return(ff);
}
    }
    ct=0;
    return(ff);
}

/**批量生成身份证*/
function createid() {
    var count = document.getElementById("txt");
    var cnt = count.value;
    var info = document.getElementById("info");
    info.innerHTML = "";
    cnt = trim(cnt);
    if (!isNaN(cnt)) {
        cnt = cnt < 0 ? cnt = 10 : cnt;
        cnt = cnt > 100 ? cnt = 100 : cnt;
        for (ii = 0; ii < cnt; ii++) {
            var t = RandomCreateID();
//alert(t);
            info.innerHTML += "<font color=\"#9900FF\">" + t + "</font>= " + getInfo(t) + "<br>";
        }
    } else {
        info.innerHTML = "<font color=\"#FF0000\">不是数字!</font>";
    }
    count.focus;
    count.select();
}
/**验证身份证号*/
function validateID() {
    var valID = document.getElementById("valID").value;
var _valID = valID.substr(0, 17)
var _verID = getCheckID(_valID);
    valResult.innerHTML = "<font color=\"#9900FF\">" + _verID + "</font>";
}


</script>
</head>

<body nload="createid();">

使用说明:<br>
    在“值”中输入阿拉伯数字,点击“生成”,可以批量生成指定数量的随机身份证号码! <hr>
<div id="query" align="center">
 值:<input id="txt" type="text" name="qrytxt" size="20" value="10"><br>
 地区码: <input id="ar" type="text" name="areatxt" size="6" maxlength=6>可为空,不足自动补1<br>
 <br>
 <input type="button" value="生成" name="btncreate" nclick="createid();"> <hr>
 <div id="info" align="left">aaa
 </div>
</div>

验证身份证号:<input id="valID" type="text" name="valID" size="20" value=""><br>
 <input type="button" value="生成" name="btncreate" nclick="validateID();">
 <div id="valResult" align="left">
 </div>
 
</body>
</html> 

TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-09-13  
1234567
891011121314
15161718192021
22232425262728
2930     

我的存档

数据统计

  • 访问量: 459
  • 日志数: 1
  • 建立时间: 2019-01-22
  • 更新时间: 2019-01-22

RSS订阅

Open Toolbar