zoukankan      html  css  js  c++  java
  • 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 ;
      }
     }
  • 相关阅读:
    Windows 8 应用的页面导航(1)
    开发 Windows 8 Bing地图应用(6)
    Windows 8 应用的页面导航(2)
    Windows 8 生命周期管理(4)
    删除DataTable重复列,只针对删除其中的一列重复的行
    Silverlight 数据库 Silverlight Database
    广告费用 会计处理及其改进
    Query to Join Delivery Details and MTL Material Table
    SAVEPOINT
    SYNCHRONIZE
  • 原文地址:https://www.cnblogs.com/siri/p/2888074.html
Copyright © 2011-2022 走看看