本帖最后由 jvxie 于 2012-08-21 14:54:08 编辑

解决方案 »

  1.   

    <script language="javascript">
      var powers=new Array("7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2");
      var parityBit=new Array("1","0","X","9","8","7","6","5","4","3","2");
      var sex="male";
      //校验身份证号码的主调用  function validId(obj){
      var _id=obj.value;
      if(_id=="")return;
      var _valid=false;
      if(_id.length==15){
      _valid=validId15(_id);
      }else if(_id.length==18){
      _valid=validId18(_id);
      }
      if(!_valid){
      alert("身份证号码有误,请检查!");
      obj.focus();
      return;
      }
      //设置性别
     
      }   
      //校验18位的身份证号码
      function SetSex(a,b)
      {
        var _n = a.substr(b,1);
        var sex;
        if(parseInt(_n%2)==0){sex="女";}else{sex="男";}
        document.getElementById("gender").value=sex;
      }
      function SetBirthday(a,b){
        var year=b==18?a.substr(6,4):a.substr(6,2);
        var month=b==18?a.substr(10,2):a.substr(8,2);
        var day=b==18?a.substr(12,2):a.substr(10,2);
        document.getElementById("y").value=year+"年"+month+"月"+day+'日';
      }
      function validId18(_id){
          _id=_id+"";
          var _num=_id.substr(0,17);
          var _parityBit=_id.substr(17);
          var _power=0;
          for(var i=0;i< 17;i++){
              //校验每一位的合法性          if(_num.charAt(i)<'0'||_num.charAt(i)>'9'){
                  return false;
                  break;
              }else {
                  //加权
                  _power+=parseInt(_num.charAt(i))*parseInt(powers[i]);
              }
          }
            //取模
          var mod=parseInt(_power)%11;
          if(parityBit[mod]==_parityBit){SetSex(_id,16);SetBirthday(_id,18);return true;}
          return false;
      }
      //校验15位的身份证号码  function validId15(_id){
          _id=_id+"";
          for(var i=0;i<_id.length;i++){
          //校验每一位的合法性
              if(_id.charAt(i)<'0'||_id.charAt(i)>'9'){
              return false;
              break;
              }
          }
          var year=_id.substr(6,2);
          var month=_id.substr(8,2);
          var day=_id.substr(10,2);       //校验年份位
          if(year<'01'||year >'90')return false;
          //校验月份
          if(month<'01'||month >'12')return false;
          //校验日
          if(day<'01'||day >'31')return false;
          SetSex(_id,14);
          SetBirthday(_id,15);
          return true;
      }</script>