JS身份证号码验证函数 支持带x的号码

原创 2007年09月27日 14:30:00
<script type="text/javascript">
alert(isIdCardNo("440781197007220512"));
//--身份证号码验证-支持新的带x身份证
function isIdCardNo(num) 
{
    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var error;
    var varArray = new Array();
    var intValue;
    var lngProduct = 0;
    var intCheckDigit;
    var intStrLen = num.length;
    var idNumber = num;    
    // initialize
    if ((intStrLen != 15) && (intStrLen != 18)) {
        //error = "输入身份证号码长度不对!";
        //alert(error);
        //frmAddUser.txtIDCard.focus();
        return false;
    }    
    // check and set value
    for(i=0;i<intStrLen;i++) {
        varArray[i] = idNumber.charAt(i);
        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
            //error = "错误的身份证号码!.";
            //alert(error);
            //frmAddUser.txtIDCard.focus();
            return false;
        } else if (i < 17) {
            varArray[i] = varArray[i]*factorArr[i];
        }
    }
    if (intStrLen == 18) {
        //check date
        var date8 = idNumber.substring(6,14);
        if (checkDate(date8) == false) {
            //error = "身份证中日期信息不正确!.";
            //alert(error);
            return false;
        }        
        // calculate the sum of the products
        for(i=0;i<17;i++) {
            lngProduct = lngProduct + varArray[i];
        }        
        // calculate the check digit
        intCheckDigit = 12 - lngProduct % 11;
        switch (intCheckDigit) {
            case 10:
                intCheckDigit = 'X';
                break;
            case 11:
                intCheckDigit = 0;
                break;
            case 12:
                intCheckDigit = 1;
                break;
        }        
        // check last digit
        if (varArray[17].toUpperCase() != intCheckDigit) {
            //error = "身份证效验位错误!...正确为: " + intCheckDigit + ".";
            //alert(error);
            return false;
        }
    } 
    else{        //length is 15
        //check date
        var date6 = idNumber.substring(6,12);
        if (checkDate(date6) == false) {
            //alert("身份证日期信息有误!.");
            return false;
        }
    }
    //alert ("Correct.");
    return true;
}

function checkDate(date)
{
    return true;
}
</script>
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

js验证身份证号码

 1、简单的正则表达式:(1)preg_match("/^(/d{18,18}|/d{15,15}|/d{17,17}x)$/",$id_card) (2)preg_match("/^(/d{6})(...

js身份证号码验证

  • 2012年02月15日 13:33
  • 6KB
  • 下载

验证身份证号码有效性的js

  • 2009年03月31日 09:28
  • 18KB
  • 下载

js 验证身份证号码正确性

今天找半天js验证身份证的,从网上找了很多,自己也总结了一下,在此记录,以便以后使用查询方便,也供大家参考。 代码如下,可直接用身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最...

js验证身份证号码的有效方法

  • 2008年12月26日 23:57
  • 7KB
  • 下载

js 验证身份证号码

JS代码// 构造函数,变量为15位或者18位的身份证号码 function clsIDCard(CardNo) { this.Valid=false; this.ID15=''; thi...
  • Draling
  • Draling
  • 2015年06月23日 13:51
  • 2945

js实现身份证号码验证

/** js实现身份证号码验证  以下是根据身份证号码编码规则,使用JS对其进行有效性验证代码 IdCard-Validate.js代码如下: */   /**  ...

js实现身份证号码验证

以下是根据身份证号码编码规则,使用JS对其进行有效性验证代码 IdCard-Validate.js代码如下:   /**   * 身份证15位编码规则:dddddd yymmdd xx p...
  • c0hui
  • c0hui
  • 2013年04月15日 09:48
  • 266
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS身份证号码验证函数 支持带x的号码
举报原因:
原因补充:

(最多只允许输入30个字)