JS身份证验证 根据身份证计算生日 年龄

function isIdCardNo(str,str2,str3)

{

    var num= document.getElementById(str).value; 

    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);

    var error;

    var varArray = new Array();

    var intValue;

    var lngProduct = 0;

    var intCheckDigit;

    var intStrLen = num.length;

    var idNumber = num;   

    // initialize

    if ((intStrLen != 15) && (intStrLen != 18)) {

        error = "身份證號碼長度錯誤!";

        alert(error);

        //frmAddUser.txtIDCard.focus();

        return false;

    }   

    // check and set value

    for(i=0;i<intStrLen;i++) {

        varArray[i] = idNumber.charAt(i);

        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {

            error = "身份證號輸入錯誤!.";

            alert(error);

            //frmAddUser.txtIDCard.focus();

            return false;

        } else if (i < 17) {

            varArray[i] = varArray[i]*factorArr[i];

        }

    }

    if (intStrLen == 18) {

        //check date

        var date8 = idNumber.substring(6,14);

        if (checkDate(date8) == false) {

            error = "身份證中日期信息錯誤!.";

            alert(error);

            return false;

        }       

        // calculate the sum of the products

        for(i=0;i<17;i++) {

            lngProduct = lngProduct + varArray[i];

        }       

        // calculate the check digit

        intCheckDigit = 12 - lngProduct % 11;

        switch (intCheckDigit) {

            case 10:

                intCheckDigit = 'X';

                break;

            case 11:

                intCheckDigit = 0;

                break;

            case 12:

                intCheckDigit = 1;

                break;

        }       

        // check last digit

        if (varArray[17].toUpperCase() != intCheckDigit) {

            error = "身份證有效驗證位錯誤!...正确为: " + intCheckDigit + ".";

            alert(error);

            return false;

        }

    }

    else{        //length is 15

        //check date

        var date6 = idNumber.substring(6,12);

        if (checkDate(date6) == false) {

            alert("身份證日期信息有誤!.");

         return false;

        }

    }

    //以下取得生日和年齡

    var s1=document.getElementById(str).value; //得到身份證號

    var s2; //返回生日

    var s3;  //返回年齡

    var birYear;

  

    var yy, mm, dd;

   

    if (s1.length == 15) 

    { 

       yy = s1.substr(6,2) 

       mm = s1.substr(8,2)  

       dd = s1.substr(10,2)  

       if (yy < 20)

       {  

        yy = '20' + yy 

        }

        else

        {  

        yy = '19' + yy  } 

        } 

        else if (s1.length == 18) 

        {  

         yy = s1.substr(6, 4)  

         mm = s1.substr(10, 2)  

         dd = s1.substr(12, 2) 

        } 

      

        else 

        {  

         return false 

        } 

        

     var myDate = new Date();

     var nowYear=myDate.getFullYear();

     

     s2=yy + '-' + mm + '-' + dd;

     s3=parseInt(nowYear) -parseInt(yy);

     

    if(s2.length==10)

    {

      document.getElementById(str2).value=s2;

      document.getElementById(str3).value=s3;

    }

   

    return true ;

} 



function GetBirthDay(txtID1, txtID2)

 {

  //如果身份證號碼正確,取出生日放到textbox中

  if(isIdCardNo(txtID1))

  {

    var s1=document.getElementById(txtID1).value; //得到身份證號

    var s2; //返回生日

    var s3;  //返回年齡

    var birYear;

    var myDate = new Date();

    var nowYear=myDate.getFullYear;

    var yy, mm, dd;

   

    if (s1.length == 15) 

    { 

       yy = s.substr(6,2) 

       mm = s.substr(8,2)  

       dd = s.substr(10,2)  

       if (yy < 20)

       {  

        yy = '20' + yy 

        }

        else

        {  

        yy = '19' + yy  } 

        } 

        else if (s1.length == 18) 

        {  

         yy = s.substr(6, 4)  

         mm = s.substr(10, 2)  

         dd = s.substr(12, 2) 

        } 

      

    else 

    {  

     return false 

    } 

    

    s2=yy + '-' + mm + '-' + dd;

    birYear=String(yy)+String(mm)+String(dd);

    

    

    s3=myDate-birYear;

    document.getElementById(txtID2).value;

    return true ;

  }

 }

 

你可能感兴趣的:(身份证)