对身份证号码合法性的验证

对于身份证号码,经常有人只是判断身份证的位数是否为15或18位,是否全部都是数字,这种判断是错误的,因为18位身份证号码允许最后一位为X,不过必须根据特定的算法(最后一位为验证码),下面这段代码就是判断身份证号码是否合法的。
<script language="JavaScript">
function CheckAvailable(){
//获得所输入的身份证号码的值
var idcardno = document.AgtmngStaffForm.idcardno.value;

//判断身份证是否为15位或者18位,其中isNumber函数是判断值是否全部是数字,这里就不给出了
if ((idcardno == "")||(!(isNumber(idcardno))&&(idcardno.length == 15))||
         ((idcardno.length != 15)&&(idcardno.length != 18)))
{
    alert("身份证号码应是15或18位数字,请输入正确!");

    //将鼠标的焦点定位到身份证那个输入框中
    document.AgtmngStaffForm.idcardno.focus();
    return false;
}
else if (idcardno.length == 18)
{//对18位身份证的判断,18位允许最后一位为X,不过必须根据特定的算法
    var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
 var Ai = new Array('1','0','X','9','8','7','6','5','4','3','2');
 
 if (idcardno.charAt(17) == 'x')
 {
  idcardno = idcardno.replace("x","X"); 
  document.AgtmngStaffForm.idcardno.value = idcardno;       
 }
 
 var checkDigit = idcardno.charAt(17);  
 var cardNoSum = 0;
     
 for (var i=0; i<idcardno.length-1; i++)
 {
  cardNoSum = cardNoSum + idcardno.charAt(i)*Wi[i];
    }

 var seq = cardNoSum%11;
 var getCheckDigit = Ai[seq];
 
 if (checkDigit != getCheckDigit)
 {
  alert("您的身份证号码输入有误!");
  document.AgtmngStaffForm.idcardno.focus();
  return false;
 }    
 return true;

else
{
    return true;
}
}
</script>

<script language="JavaScript" type="text/javascript"> function CheckAvailable(){ //获得所输入的身份证号码的值 var idcardno = document.AgtmngStaffForm.idcardno.value; //判断身份证是否为15位或者18位,其中isNumber函数是判断值是否全部是数字,这里就不给出了 if ((idcardno == "")||(!(isNumber(idcardno))&amp;&amp;(idcardno.length == 15))|| ((idcardno.length != 15)&amp;&amp;(idcardno.length != 18))) { alert("身份证号码应是15或18位数字,请输入正确!"); //将鼠标的焦点定位到身份证那个输入框中 document.AgtmngStaffForm.idcardno.focus(); return false; } else if (idcardno.length == 18) {//对18位身份证的判断,18位允许最后一位为X,不过必须根据特定的算法 var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); var Ai = new Array('1','0','X','9','8','7','6','5','4','3','2'); if (idcardno.charAt(17) == 'x') { idcardno = idcardno.replace("x","X"); document.AgtmngStaffForm.idcardno.value = idcardno; } var checkDigit = idcardno.charAt(17); var cardNoSum = 0; for (var i=0; i&lt;idcardno.length-1; i++) { cardNoSum = cardNoSum + idcardno.charAt(i)*Wi[i]; } var seq = cardNoSum%11; var getCheckDigit = Ai[seq]; if (checkDigit != getCheckDigit) { alert("您的身份证号码输入有误!"); document.AgtmngStaffForm.idcardno.focus(); return false; } return true; } else { return true; } } </script>

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值