根据身份证号码导出生日和性别(JavaScript代码)

<script language="Javascript">
  
function showBirthday(val)
  
{
   
var birthdayValue;
   
if(15==val.length)
   
//15位身份证号码
    birthdayValue = val.charAt(6)+val.charAt(7);
    
if(parseInt(birthdayValue)<10)
    
{
     birthdayValue 
= '20'+birthdayValue;
    }

    
else
    
{
     birthdayValue 
= '19'+birthdayValue;
    }

    birthdayValue
=birthdayValue+'-'+val.charAt(8)+val.charAt(9)+'-'+val.charAt(10)+val.charAt(11);
    
if(parseInt(val.charAt(14)/2)*2!=val.charAt(14))
     document.all.sex.value
='男';
    
else
     document.all.sex.value
='女';
    document.all.birthday.value
=birthdayValue;
   }

   
if(18==val.length)
   
//18位身份证号码
•    birthdayValue=val.charAt(6)+val.charAt(7)+val.charAt(8)+val.charAt(9)+'-'+val.charAt(10)+val.charAt(11)  
   
+'-'+val.charAt(12)+val.charAt(13);

    
if(parseInt(val.charAt(16)/2)*2!=val.charAt(16))
     document.all.sex.value
='男';
    
else
     document.all.sex.value
='女';
    
if(val.charAt(17)!=IDCard(val))
    
{
     document.all.idCard.style.backgroundColor
='#ffc8c8';
    }

    
else
    
{
     document.all.idCard.style.backgroundColor
='white';
    }

    document.all.birthday.value
=birthdayValue;
   }

  }

  
// 18位身份证号最后一位校验
  function IDCard(Num)
  
{
   
if (Num.length!=18)
    
return false;
   
var x=0;
   
var y='';
   
for(i=18;i>=2;i--)
    x 
= x + (square(2,(i-1))%11)*parseInt(Num.charAt(19-i-1));
   x
%=11;
   y
=12-x;
   
if (x==0)
    y
='1';
   
if (x==1)
    y
='0';
   
if (x==2)
    y
='X';
   
return y;
  }

  
// 求得x的y次方
  function square(x,y)
  
{
   
var i=1;
   
for (j=1;j<=y;j++)
    i
*=x;
   
return i;
  }

  
</script>


hobo 2009-10-14 22:21 发表评论
posted @ 2009-10-14 22:21  无业の游民  阅读(573)  评论(0编辑  收藏  举报