身份证验证代码之——javascript篇

< script language = javascript >
function  checkIdcard(idcard){

var  area = { 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 : " 国外 "

var  idcard,Y,JYM;
var  S,M;
var  idcard_array  =   new  Array();
idcard_array 
=  idcard.split( "" );
// 地区检验
if (area[parseInt(idcard.substr( 0 , 2 ))] == null return   4 ;
// 身份号码位数及格式检验
switch (idcard.length){
case   15 :
if  ( (parseInt(idcard.substr( 6 , 2 )) + 1900 %   4   ==   0   ||  ((parseInt(idcard.substr( 6 , 2 )) + 1900 %   100   ==   0   &&  (parseInt(idcard.substr( 6 , 2 )) + 1900 %   4   ==   0  )){
ereg
=/^ [ 1 - 9 ][ 0 - 9 ]{ 5 }[ 0 - 9 ]{ 2 }(( 01 | 03 | 05 | 07 | 08 | 10 | 12 )( 0 [ 1 - 9 ] | [ 1 - 2 ][ 0 - 9 ] | 3 [ 0 - 1 ]) | ( 04 | 06 | 09 | 11 )( 0 [ 1 - 9 ] | [ 1 - 2 ][ 0 - 9 ] | 30 ) | 02 ( 0 [ 1 - 9 ] | [ 1 - 2 ][ 0 - 9 ]))[ 0 - 9 ]{ 3 }$ / ; // 测试出生日期的合法性
else  {
ereg
=/^ [ 1 - 9 ][ 0 - 9 ]{ 5 }[ 0 - 9 ]{ 2 }(( 01 | 03 | 05 | 07 | 08 | 10 | 12 )( 0 [ 1 - 9 ] | [ 1 - 2 ][ 0 - 9 ] | 3 [ 0 - 1 ]) | ( 04 | 06 | 09 | 11 )( 0 [ 1 - 9 ] | [ 1 - 2 ][ 0 - 9 ] | 30 ) | 02 ( 0 [ 1 - 9 ] | 1 [ 0 - 9 ] | 2 [ 0 - 8 ]))[ 0 - 9 ]{ 3 }$ / ; // 测试出生日期的合法性
}
if (ereg.test(idcard))  return   0 ;
else   return   2 ;
break ;
case   18 :
// 18位身份号码检测
//
出生日期的合法性检查 
//
闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
//
平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
if  ( parseInt(idcard.substr( 6 , 4 ))  %   4   ==   0   ||  (parseInt(idcard.substr( 6 , 4 ))  %   100   ==   0   &&  parseInt(idcard.substr( 6 , 4 )) % 4   ==   0  )){
ereg
=/^ [ 1 - 9 ][ 0 - 9 ]{ 5 } 19 [ 0 - 9 ]{ 2 }(( 01 | 03 | 05 | 07 | 08 | 10 | 12 )( 0 [ 1 - 9 ] | [ 1 - 2 ][ 0 - 9 ] | 3 [ 0 - 1 ]) | ( 04 | 06 | 09 | 11 )( 0 [ 1 - 9 ] | [ 1 - 2 ][ 0 - 9 ] | 30 ) | 02 ( 0 [ 1 - 9 ] | [ 1 - 2 ][ 0 - 9 ]))[ 0 - 9 ]{ 3 }[ 0 - 9Xx]$ / ; // 闰年出生日期的合法性正则表达式
else  {
ereg
=/^ [ 1 - 9 ][ 0 - 9 ]{ 5 } 19 [ 0 - 9 ]{ 2 }(( 01 | 03 | 05 | 07 | 08 | 10 | 12 )( 0 [ 1 - 9 ] | [ 1 - 2 ][ 0 - 9 ] | 3 [ 0 - 1 ]) | ( 04 | 06 | 09 | 11 )( 0 [ 1 - 9 ] | [ 1 - 2 ][ 0 - 9 ] | 30 ) | 02 ( 0 [ 1 - 9 ] | 1 [ 0 - 9 ] | 2 [ 0 - 8 ]))[ 0 - 9 ]{ 3 }[ 0 - 9Xx]$ / ; // 平年出生日期的合法性正则表达式
}
if (ereg.test(idcard)){ // 测试出生日期的合法性
//
计算校验位
=  (parseInt(idcard_array[ 0 ])  +  parseInt(idcard_array[ 10 ]))  *   7
+  (parseInt(idcard_array[ 1 ])  +  parseInt(idcard_array[ 11 ]))  *   9
+  (parseInt(idcard_array[ 2 ])  +  parseInt(idcard_array[ 12 ]))  *   10
+  (parseInt(idcard_array[ 3 ])  +  parseInt(idcard_array[ 13 ]))  *   5
+  (parseInt(idcard_array[ 4 ])  +  parseInt(idcard_array[ 14 ]))  *   8
+  (parseInt(idcard_array[ 5 ])  +  parseInt(idcard_array[ 15 ]))  *   4
+  (parseInt(idcard_array[ 6 ])  +  parseInt(idcard_array[ 16 ]))  *   2
+  parseInt(idcard_array[ 7 ])  *   1  
+  parseInt(idcard_array[ 8 ])  *   6
+  parseInt(idcard_array[ 9 ])  *   3  ;
=  S  %   11 ;
=   " F " ;
JYM 
=   " 10X98765432 " ;
=  JYM.substr(Y, 1 ); // 判断校验位
if (M  ==  idcard_array[ 17 ])  return   0 // 检测ID的校验位
else   return   3 ;
}
else   return   2 ;
break ;
default :
return   1 ;
break ;
}
}

        
function  CheckForm()
        {
        
var  Errors = new  Array(
" 验证通过! " ,
" 身份证号码位数不对! " ,
" 身份证号码出生日期超出范围或含有非法字符! " ,
" 身份证号码校验错误! " ,
" 身份证地区非法! "
);
        
var  result = checkIdcard(document.getElementById( " txt_sfzmhm " ).value);
        
if (result != 0 )
        {
        alert(Errors[result]);
                document.getElementById(
" txt_sfzmhm " ).focus();
                
return   false ;        
        }        
            
if (document.getElementById( " txt_djzsxxdz " ).value == "" )
            {
                alert(
' 请输入你的登记住所详细地址! ' );
                document.getElementById(
" txt_djzsxxdz " ).focus();
                
return   false ;
            }
            
return   true ;
        }

// ================================================
//
地区选择
function  RemoveAllOption(obj)
{
  
var  len  =  obj.length - 1 ;
  
for ( var  i = len; i >= 0 ; i -- )
  {
     obj.options.remove(i);
  }
}
function  AddEmptyOption(obj)
{
   obj.options.add(
new  Option( "" , "" ));
}
function  FirstChangeOption1(ele,first,second,field)
{
  RemoveAllOption(second);
  second.options.add(
new  Option(first.options[first.selectedIndex].text, "" )); 
  
var  TempOptionStr;
    
var  SkillCode  =  field.value;
    
var  currentValue  =  first.value;
    
if  (currentValue.length  >=   2 ){
        
var  arrValue  =  SkillCode.split( " ; " );
        
for  ( var  i = 0 ;i < arrValue.length;i ++ ){
            
var  arrOneValue  =  arrValue[i].split( " , " );
            
if  (currentValue.substr( 0 , 2 ==  arrOneValue[ 0 ].substr( 0 , 2 )) {     // 查找到合适的项目
              if ( arrOneValue[ 0 ].length  > 2   &&  arrOneValue[ 0 !=  currentValue)
             {
                    TempOptionStr
=   '   ' + arrOneValue[ 1 ];
                    second.options.add(
new  Option(TempOptionStr,arrOneValue[ 0 ]));
             }
            }
        }
    }
   
if  (second.options.length  <=   1 ) { 
   second.style.display
= ' none ' ; document.getElementById(ele).value  =  first.value ;
   }
    
else   second.style.display = '' ;  }
function  FirstChangeOption2(ele,first,second,third,field)
{
  RemoveAllOption(second);
  second.options.add(
new  Option(first.options[first.selectedIndex].text, "" ));  RemoveAllOption(third);
  AddEmptyOption(third);
  
var  TempOptionStr;
    
var  SkillCode  =  field.value;
    
var  currentValue  =  first.value;
    
if  (currentValue.length  >=   2 ){
        
var  arrValue  =  SkillCode.split( " ; " );
        
for  ( var  i = 0 ;i < arrValue.length;i ++ ){
            
var  arrOneValue  =  arrValue[i].split( " , " ); 
            
if  (currentValue.substr( 0 , 2 ==  arrOneValue[ 0 ].substr( 0 , 2 )) {     // 查找到合适的项目
                 var  IsZero  =   true
                
var  ssub  =  arrOneValue[ 0 ].substr( 4 );
                
for ( var  j = 0 ; j < ssub.length;j ++ )
                {
                    
if (ssub.substring(j,j + 1 !=   " 0 " )
                    {
                       IsZero 
=   false ;
                       
break ;
                    }
                }
             
if (IsZero  &&  arrOneValue[ 0 ] != currentValue)
             {
                   TempOptionStr
=   '   ' + arrOneValue[ 1 ];
                   second.options.add(
new  Option(TempOptionStr,arrOneValue[ 0 ]));
             }
            }
        }
    }
document.getElementById(ele).value 
=  first.value;

if  (second.options.length  <=   1 ) second.style.display = ' none ' else  second.style.display = '' ;
if  (third.options.length  <=   1 ) third.style.display = ' none ' else  third.style.display = '' ; }
function  SecondChangeOption(ele,second,third,field)
{
  RemoveAllOption(third);
  third.options.add(
new  Option(second.options[second.selectedIndex].text.replace( '   ' , '' ), "" ));
    
var  TempOptionStr;
    
var  SkillCode  =  field.value;
    
var  currentValue  =  second.value;
    
if  (currentValue.length != 0 ){
        
var  arrValue  =  SkillCode.split( " ; " );
        
for  ( var  i = 0 ;i < arrValue.length;i ++ ){
            
var  arrOneValue  =  arrValue[i].split( " , " );
            
if  (arrOneValue[ 0 ].length > 4   &&  arrOneValue[ 0 !=  currentValue   &&  currentValue.substring( 0 , 4 ==  arrOneValue[ 0 ].substr( 0 , 4 )) {     // 查找到合适的项目
                TempOptionStr =   '   ' + arrOneValue[ 1 ];
                third.options.add(
new  Option(TempOptionStr,arrOneValue[ 0 ]));
            }
        }
    }
document.getElementById(ele).value 
=  second.value; 

if  (third.options.length  <=   1 ) third.style.display = ' none ' else  third.style.display = '' ; }
function  ThirdChangeOption(ele,third)
{
   document.getElementById(ele).value 
=  third.value ;
  
   
}

        
</ script >
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值