js驗證身份證營業執照組織機構代碼等


//身份證驗證中頁面上要有一個id=ipmessage的標簽用來寫提示信息

//機構代碼驗證中頁面上要有一個id=agency_code的標簽來寫提示信息,並且要在CSS里寫一個check的CLASS樣式用來改變文本狀態

//營業執照驗證中頁面上要有一個id=business_license的標簽來寫提示信息,並且要在CSS里寫一個check的CLASS樣式用來改變文本狀態

//頁面樣式,例如:

<style>

.check{
    border:1px solid #826765;
    background-color:#f8e3e2;
    color:#5c0733;
    font-weight:bold;
}

</style>

<div class="gyydXm"><span class="gddyName">身&nbsp;份&nbsp;證&nbsp;號&nbsp;碼</span><span class="gddyInput">
    <input type="text" name="identity_card" id="identity_card" value="" class="gyydText" />
    </span><span class="gddyTs">*</span><span id="ipmessage" class="gddyTstext">必填</span></div>


<div class="gyydXm"><span class="gddyName">機&nbsp;構&nbsp;代&nbsp;碼</span><span class="gddyInput">
    <input type="text" name="agency_code" id="agency_code" value="" class="gyydText" />
    </span><span class="gddyTs">*</span><span class="gddyTstext">必填</span></div>


<div class="gyydXm"><span class="gddyName">營&nbsp;業&nbsp;執&nbsp;照&nbsp;號</span><span class="gddyInput">
    <input type="text" name="business_license" id="business_license" value="" class="gyydText" />
    </span><span class="gddyTs">*</span><span class="gddyTstext">必填</span></div>

<script>

//身份證

function checkDate( idcard ){
var socialNo = idcard;
if(socialNo == "")  
    {  
      $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
      //alert("輸入身份證號碼不能為空!");  
      return (false);  
    }  


    if (socialNo.length != 15 && socialNo.length != 18)  
    {  
      $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
     //alert("輸入身份證號碼格式不正確!");  
      return (false);  
    }  
        
   var area={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:"新疆",71:"台灣",81:"香港",82:"澳門",91:"國外"};   
       
     if(area[parseInt(socialNo.substr(0,2))]==null) {  
      $('#ipmessage').html('身份證號碼不正確(地區非法),必須是15位到18位的身份證號');
     //alert("身份證號碼不正確(地區非法)!");  
          return (false);  
     }   
            
    if (socialNo.length == 15)  
    {  
       pattern= /^\d{15}$/;  
       if (pattern.exec(socialNo)==null){  
          $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
         //alert("15位身份證號碼必須為數字!");  
          return (false);  
      }  
      var birth = parseInt("19" + socialNo.substr(6,2));  
      var month = socialNo.substr(8,2);  
      var day = parseInt(socialNo.substr(10,2));  
      switch(month) {  
          case '01':  
          case '03':  
          case '05':  
          case '07':  
          case '08':  
          case '10':  
          case '12':  
              if(day>31) {  
                  $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
                 //alert('輸入身份證號碼不格式正確!');  
                  return false;  
              }  
              break;  
          case '04':  
          case '06':  
          case '09':  
          case '11':  
              if(day>30) {  
                  $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
                 //alert('輸入身份證號碼不格式正確!');  
                  return false;  
              }  
              break;  
          case '02':  
              if((birth % 4 == 0 && birth % 100 != 0) || birth % 400 == 0) {  
                  if(day>29) {  
                      $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
                     //alert('輸入身份證號碼不格式正確!');  
                      return false;  
                  }  
              } else {  
                  if(day>28) {  
                      $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
                     //alert('輸入身份證號碼不格式正確!');  
                      return false;  
                  }  
              }  
              break;  
          default:  
              $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
             //alert('輸入身份證號碼不格式正確!');  
              return false;  
      }  
      var nowYear = new Date().getYear();  
      if(nowYear - parseInt(birth)<15 || nowYear - parseInt(birth)>100) {  
          $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
         //alert('輸入身份證號碼不格式正確!');  
          return false;  
      }  
      $('#ipmessage').html('通過!');
      return (true);  
    }  
      
    var Wi = new Array(  
              7,9,10,5,8,4,2,1,6,  
              3,7,9,10,5,8,4,2,1  
              );  
    var   lSum        = 0;  
    var   nNum        = 0;  
    var   nCheckSum   = 0;  
      
      for (i = 0; i < 17; ++i)  
      {  
            


          if ( socialNo.charAt(i) < '0' || socialNo.charAt(i) > '9' )  
          {  
              $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
             //alert("輸入身份證號碼格式不正確!");  
              return (false);  
          }  
          else  
          {  
              nNum = socialNo.charAt(i) - '0';  
          }  
           lSum += nNum * Wi[i];  
      }  


      
      if( socialNo.charAt(17) == 'X' || socialNo.charAt(17) == 'x')  
      {  
          lSum += 10*Wi[17];  
      }  
      else if ( socialNo.charAt(17) < '0' || socialNo.charAt(17) > '9' )  
      {  
          $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
         //alert("輸入身份證號碼格式不正確!");  
          return (false);  
      }  
      else  
      {  
          lSum += ( socialNo.charAt(17) - '0' ) * Wi[17];  
      }  


        
        
      if ( (lSum % 11) == 1 )  
      {  
     $('#ipmessage').html('通過!');
          return true;  
      }  
      else  
      {  
          $('#ipmessage').html('輸入身份證號碼格式不正確,必須是15位到18位的身份證號');
         //alert("輸入身份證號碼格式不正確!");  
          return (false);  
      }  
  }
  /**
*驗證營業執照是否合法:營業執照長度須為15位數字,前14位為順序碼,
*最后一位為根據GB/T 17710 1999(ISO 7064:1993)的混合系統校驗位生成算法
*計算得出。此方法即是根據此算法來驗證最后一位校驗位是否政正確。如果
*最后一位校驗位不正確,則認為此營業執照號不正確(不符合編碼規則)。
*以下說明來自於網絡:
*我國現行的營業執照上的注冊號都是15位的,不存在13位的,從07年開始國
*家進行了全面的注冊號升級就全部都是15位的了,如果你看見的是13位的注
*冊號那肯定是假的。
*15位數字的含義,代碼結構工商注冊號由14位數字本體碼和1位數字校驗碼
*組成,其中本體碼從左至右依次為:6位首次登記機關碼、8位順序碼。  
    *   一、前六位代表的是工商行政管理機關的代碼,國家工商行政管理總局用
        *           “100000”表示,省級、地市級、區縣級登記機關代碼分別使用6位行
        *             政區划代碼表示。設立在經濟技術開發區、高新技術開發區和保稅區
        *             的工商行政管理機關(縣級或縣級以上)或者各類專業分局應由批准
        *             設立的上級機關統一賦予工商行政管理機關代碼,並報國家工商行政
        *             管理總局信息化管理部門備案。
    *   二、順序碼是7-14位,順序碼指工商行政管理機關在其管轄范圍內按照先
        *             后次序為申請登記注冊的市場主體所分配的順序號。為了便於管理和
        *              賦碼,8位順序碼中的第1位(自左至右)采用以下分配規則:
    *            1)內資各類企業使用“0”、“1”、“2”、“3”;
    *            2)外資企業使用“4”、“5”;
    *            3)個體工商戶使用“6”、“7”、“8”、“9”。  
    *   順序碼是系統根據企業性質情況自動生成的。  
*   順序碼是系統根據企業性質情況自動生成的。  
    *三、校驗碼是最后一位,校驗碼用於檢驗本體碼的正確性
*/
    function isValidBusCode(busCode){
        //return true;
        var ret=false;
        if(busCode.length==15){
            var sum=0;
            var s=[];
            var p=[];
            var a=[];
            var m=10;
            p[0]=m;
            for(var i=0;i<busCode.length;i++){
               a[i]=parseInt(busCode.substring(i,i+1),m);
               s[i]=(p[i]%(m+1))+a[i];
               if(0==s[i]%m){
                 p[i+1]=10*2;
               }else{
                 p[i+1]=(s[i]%m)*2;
                }    
            }                                       
            if(1==(s[14]%m)){
               //營業執照編號正確!
                ret=true;
                $("#business_license").removeClass('check');
                $("#business_license").parent().siblings(".gddyTstext").text("營業執照編號正確!");
                //alert("營業執照編號正確!");
            }else{
               //營業執照編號錯誤!
                ret=false;
                $("#business_license").addClass('check');
                $("#business_license").parent().siblings(".gddyTstext").text("營業執照編號錯誤!");
                //alert("營業執照編號錯誤!");
             }
        }//如果營業執照為空
        else if(""==busCode){
            $("#business_license").addClass('check');
            $("#business_license").parent().siblings(".gddyTstext").text("營業執照編號不能為空!");
            ret=false;
        }else{
            ret=false;
            $("#business_license").addClass('check');
            $("#business_license").parent().siblings(".gddyTstext").text("營業執照格式不對,必須是15位數的!");
            //alert("營業執照格式不對,必須是15位數的!");
        }
        return ret;
    }
    /**
*驗證組織機構代碼是否合法:組織機構代碼為8位數字或者拉丁字母+“-”+1位校驗碼。
*驗證最后那位校驗碼是否與根據公式計算的結果相符。
*編碼規則請參看
*http://wenku.baidu.com/view/d615800216fc700abb68fc35.html
*/
function isValidOrgCode(orgCode){
   //return ""==orgCode || orgCode.length==10;
   //return true;
   var ret=false;
   var codeVal = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
   var intVal =    [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35];
   var crcs =[3,7,9,10,5,8,4,2];
   if(!(""==orgCode) && orgCode.length==10){
      var sum=0;
      for(var i=0;i<8;i++){
         var codeI=orgCode.substring(i,i+1);
         var valI=-1;
         for(var j=0;j<codeVal.length;j++){
             if(codeI==codeVal[j]){
                valI=intVal[j];
                break;
             }
         }
         sum+=valI*crcs[i];
      }
      var crc=11- (sum%11);
               
      switch (crc){
                   case 10:{
                       crc="X";
                       break;
                   }default:{
                       break;
                   }
               }
      //alert("crc="+crc+",inputCrc="+orgCode.substring(9));
               //最后位驗證碼正確
      if(crc==orgCode.substring(9)){
                   ret=true;
                   $("#agency_code").removeClass('check');
                   $("#agency_code").parent().siblings(".gddyTstext").text("正確!");
      }else{
                   ret=false;
                   $("#agency_code").addClass('check');
                   $("#agency_code").parent().siblings(".gddyTstext").text("組織機構代碼不正確!");
               }
   }else if(""==orgCode){
       ret=false;
                $("#agency_code").addClass('check');
                $("#agency_code").parent().siblings(".gddyTstext").text("組織機構代碼不能為空!");
   }else{
                ret=false;
                $("#agency_code").addClass('check');
                $("#agency_code").parent().siblings(".gddyTstext").text("組織機構代碼格式不正確,組織機構代碼為8位數字或者拉丁字母+“-”+1位校驗碼,並且字母必須大寫!");
            }
   return ret;

}

</script>

/*思路來源:

http://wenku.baidu.com/view/71e20c6f011ca300a6c390d2.html

*/


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com