【JavaScript】身份證驗證

function firstlettererr(id){
   var fl=id.value.substr(0,1);
   var T="ABCDEFGHJKLMNPQRSTUVWXYZ"; //*24個*// 
   var smp=id.value.substr(0,1);
   if (T.indexOf(smp) == -1) { return false; } else { return true; }
}

function checkid(id) {
   if(id.value.length==10)
   { return true; } else { return false; }
}

function chfastid(id) {
   var c = id.value.charAt(0);
   if(c<"A" || c> "Z")
   { return false; } else { return true; }
}

function ch12fastid(id) {
   var c = id.value.charAt(1); 
   if(c!="1" && c!="2")
   { return false; } else { return true; }
}

function idmanber(id) { //=====後九碼為數字//
   var bmp;
   var d="0123456789";
   var bab=id.value.length-1;
   for (var i=1;i<=bab;i++){
     bmp=id.value.substr(i,1)
     if (d.indexOf(bmp) == -1) { return false; }
   }
   if(id.value != "0")
   { return true; } else
   { return false; }
}

function idchackok(id) { //規則//
   var alph = new Array   ("A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","X","Y","W","Z","I","O");
   var num = new Array     ("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 n=0;
   for(i=0;i<alph.length;i++)
     if(id.value.charAt(0)==alph[i])
      n=i; 
    var tot1 = parseFloat(num[n].charAt(0)) + (parseFloat(num[n].charAt(1)) * 9);
    var tot2 = 0;
    for(i=1;i<id.value.length-1;i++)
     tot2 = tot2 + parseFloat(id.value.charAt(i))*(9-i);
     var tot3 = parseFloat(id.value.charAt(9));
     var tot4 = tot1 + tot2 + tot3; 
    if((tot4 % 10)!=0)
    { return false; } else { return true; }
}


function idCheck(id){

   if(checkid(id) == false){
      alert("您的身份證字號位數不對!!");
      return false;
   }

   if(chfastid(id) == false){
      alert("您的身分證字號第一碼必須是大寫的英文字母 !"); 
      return false; 
   }

   if(ch12fastid(id) == false){ 
      alert("您的身分證字號第二碼有問題 !");
      return false;
   }

   if(firstlettererr(id) == false){
      alert("您的身份證字號錯誤!!");
      return false;
   }

   if(idmanber(id) == false){
      alert("您的身份證字號後9碼應為數字!!");
      return false;
   }

   if(idchackok(id) == false){
      alert("您的身分證字號有問題 !");
      return false;
   }

}

EX :

 idCheck(A123456789); ---> True

 idCheck(B123456789); ---> False

留言

這個網誌中的熱門文章

【ASP】日期轉換(西元<-->民國)

【VB】使用NPOI元件來匯出Excel--DataTableToExcel

【SQL】符號切割字串變成多欄