这个很简单啊,你固定取出身份证的某几位作为出生日期,固定几位为省份。
出生日期是文本字段,可以直接显示;省份就对document.all.provide[i]进行循环判断,如果value等于身份证中的省份号码,就置为选中状态。

解决方案 »

  1.   

    翻译了一下做的一个C#项目的验证代码,本机调试通过<script>
    function check(obj)
    {
       if(document.getElementsByName('card')[0].value=='1'&&(obj.value.length==15||obj.value.length==18))
         {
         
             var a=CheckCidInfo(obj.value);
             document.getElementsByName('iden')[0].value=a[1];
             for(var i=0;i<document.getElementsByName('provide').options.length;i++)
              {
                 if(document.getElementsByName('provide').options[i].text==a[0]) 
                   document.getElementsByName('provide').options[i].selected=true;
              }
         }
       else
         {
             alert((obj.value.length==15||obj.value==17));
         }
    }
    function CheckCidInfo(cid)
    {
    var arr=new Array(3);
    if(cid.length ==15)
    {
    cid=Card15To18(cid);
    }
    var aCity = new Array(null,null,null,null,null,null,null,null,null,null,null,"北京","天津","河北","山西","内蒙古",null,null,null,null,null,"辽宁","吉林","黑龙江",null,null,null,null,null,null,null,"上海","江苏","浙江","安微","福建","江西","山东",null,null,null,"河南","湖北","湖南","广东","广西","海南",null,null,null,"重庆","四川","贵州","云南","西藏",null,null,null,null,null,null,"陕西","甘肃","青海","宁夏","新疆",null,null,null,null,null,"台湾",null,null,null,null,null,null,null,null,null,"香港","澳门",null,null,null,null,null,null,null,null,"国外");
    var iSum=0;

    //验证身份证号码是否是18位数字组成
    if(!(/^\d{17}(\d|x)$/.test(cid)))
    {
    return "身份证号码不正确,请重新输入";
    }   
    cid = cid.toLowerCase();
    cid = cid.replace(/x/g,'a');//验证身份证号码地区部分是否正确
    if(aCity[parseInt(cid.substring(0,2))]==null)
    {
       return "身份证号码地区部分不正确";
    }
    arr[0]=aCity[parseInt(cid.substring(0,2))];  //地区
    arr[1]=cid.substring(6,10)+"-"+cid.substring(10,12)+"-"+cid.substring(12,14);

    //对身份证号码进行校验
    for(var i=17;i>=0;i--)
    {                                   
     iSum +=(Math.pow(2,i)%11)*parseInt(cid.charAt(17-i).toString(),16);
    }
    if(iSum%11!=1)
    return "非法证号";
       
    //判断身份证号码是否与性别相符 1 男 0 女
    var cidSex=(parseInt(cid.substring(16,17))%2==1?"1":"0");
    arr[2]=cidSex;return arr;
    }function Card15To18(oldidcard)
    {
    var wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var ch = new Array('1','0','X','9','8','7','6','5','4','3','2');
    var newidcard = '';
    newidcard = oldidcard.substring(0,6)+"19"+oldidcard.substring(6,15); //插入"19"到原串中,生成17位串
    var aw = 0;// 计算 ∑(ai×wi)
    for (var i =0; i<=16; i++)  
    {
       aw += parseInt(newidcard.charAt(i).toString()) * wi[i];
    }aw = aw % 11;
    newidcard += ch[aw]; //查表添加最后一位
    return newidcard;}
    </script>
    <form action="">
      身份证:<select name=card>
              <option value="1">身份证</option>
          <option value="2">护照</option>
             </select>
     证件号码:<input type=text name='card_num' onblur="check(this)">
     出生日期:<input type=text name=iden>
     省份:<select name=provide>
             <option value="1100">北京</option>
          <option value="2200">上海</option>
           </select>
    </form>