身份证校验js

本文介绍了使用JavaScript实现的身份证号码验证与性别识别功能,包括对18位和15位身份证号码的合法性检查,以及根据身份证号末尾判断性别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script>

var powers=new Array("7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2");  
var parityBit=new Array("1","0","X","9","8","7","6","5","4","3","2");    
var sex="1";    //校验身份证号码的主调用 

    function validId(obj,sexObjId){  
      var _id=obj.value;      
      if(_id=="")
      {
          alert("请输入有效身份证号");
           obj.focus();           
          return false;
      }       
      
      if(_id.length==18){           
         valid=validId18(_id);       
      }
      else
      {
    	  alert("请输入18位有效身份证号");
          return false;
      }       
      if(!valid){           
         alert("身份证号码有误,请检查!");           
         obj.focus();           
         return false;       

      }        
	  if(sexObjId!="")
	  {
		//  setSex(sexObjId);
		  }	
	  return true;
    }       //校验18位的身份证号码 
    function validId18(_id){      
        _id=_id+"";      
             var _num=_id.substr(0,17);       
            var _parityBit=_id.substr(17); 
            var _power=0;       
            for(var i=0;i< 17;i++){            //校验每一位的合法性 
                    if(_num.charAt(i)<'0'||_num.charAt(i)>'9'){               
                                return false;               
                                break;           
                    }else{                //加权 
                          _power+=parseInt(_num.charAt(i))*parseInt(powers[i]);                //设置性别 
                          if(i==16&&parseInt(_num.charAt(i))%2==0){                  
                        	  sex="0";               
                          }else{                   
                        	  sex="1";              
                          }          
                     }      
             }        //取模 
            var mod=parseInt(_power)%11;  
             if(parityBit[mod]==_parityBit){           
                        return true;      
             }       
             else{return false;}   
    }   
function setSex(objId)
{
	//设置性别 
    var sexSel=document.getElementsByName(objId);
    //sexSel[0].disabled=false;
   // sexSel[1].disabled=false;
    if(sex == '1')
    {
		sexSel[0].checked=true;
        }
    else if(sex == '0')
    {
        sexSel[1].checked = true;
     }
   // sexSel[0].disabled=true;
    //sexSel[1].disabled=true;
}
</script>
function  validId15 (_id){  
        var flag = true;
    	//var _id=obj.value; 
		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:"国外"} ;
	  	if(area[parseInt(_id.substr(0,2))]==null) flag = false;
	    if(flag && _id.length == 15){
		  if ((parseInt(_id.substr(6,2))+1900) % 4 == 0 || ((parseInt(_id.substr(6,2))+1900) % 100 == 0 && (parseInt(_id.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(_id))	flag = false;
		 }
		//设置性别
		sex=_id.slice(14,17)%2 ? "1" : "0";
		return flag;
        }


 

<input name="orderConsigneeAddress.idCard" onblur="validId(this,'orderConsigneeAddress.sex')" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值