页面调用(struts):

<div class="font-zi-t">
             身份证号码

<html:text property="idCard" maxlength="18"
              styleId="idCard" onchange="checkId(this.value)" />
             <span id="idCardError" class="STYLE6">不可更改,请慎重填写&nbsp;(严格保密)</span>
       </div>

javascript验证身份证方法:

function checkId(str)
{
var idCardError=document.getElementById("idCardError");
if(str==""){
  idCardError.innerHTML="不可更改,请慎重填写&nbsp;(严格保密)";
  return true;
}
if(str.length!=18&&str.length!=15)
   {
    idCardError.innerHTML="身份证号码应为15位或18位";
    return false;
   }
if(str.length==18)
{
 var arra=new Array(17);
 var arrw=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
 var arrchk=new Array('1','0','x','9','8','7','6','5','4','3','2');
 var arrbase=new Array(0,1,2,3,4,5,6,7,8,9,10)
 var i,sum,resu,num;
 num=0;
 resu=0;
 sum=0;
 for(i=0;i<arra.length;i++)
 {
    arra[i]=parseInt(str.charAt(i));
    sum=arra[i]*arrw[i];
    resu+=sum;
 }
// alert(resu);
 num=parseInt(resu%11);
  //alert(num);
  //alert(arrchk[num]);
  //alert(str.charAt(17));
  //alert(str.charAt(17).toLowerCase());

 if(arrchk[num]!=str.charAt(17).toLowerCase())
 {
  idCardError.innerHTML="身份证不合法";
     return false;
   }
   else
   {
   idCardError.innerHTML="不可更改,请慎重填写&nbsp;(严格保密)";
   return true;
   }
}


if(str.length==15)
   {
   var flag=null;
             if(isNaN(str))
    {
    idCardError.innerHTML="只能为数字";
    return flag;
    }
    if(parseInt(str.substr(8,2))>12)
    {
    idCardError.innerHTML="出生月不合法";
    return flag;
    }
    if(parseInt(str.substr(10,2))>31&&parseInt(str.substr(8,2))!=2)
    {
    idCardError.innerHTML="出生日不合法";
    return flag;
    }
    var date=new Date();
    y=parseInt(date.getFullYear());
    x=parseInt("19"+str.substr(6,2));
    if(Math.abs(y-x)>100||Math.abs(y-x)<18)
    {
    idCardError.innerHTML="出生日不合法"+x;
 
    return flag;
    }
   var aCity={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(aCity[parseInt(str.substr(0,2))]==null)
    {
    idCardError.innerHTML="省份不合法";
    return flag;
    }
    var year=parseInt(str.substr(6,2));
    year=parseInt("19"+year)
   if(year%400==0 || (year%4==0 && year%100!=0))
            {
      if(parseInt(str.substr(10,2))>29&&parseInt(str.substr(8,2))==2)
        {
        idCardError.innerHTML="出生年月日不合法";
         return flag;
               }    
        else if(parseInt(str.substr(10,2))>28&&parseInt(str.substr(8,2))==2)
        {
        idCardError.innerHTML="出生年月日不合法";
         return flag;
      }
   }
if(!flag)
{
idCardError.innerHTML="不可更改,请慎重填写&nbsp;(严格保密)";
return true;
}
    }

}

特点:验证非常严格


Leave a Reply