怎样严格检验身份证号码?一个验证Javascript身份证号验证函数

《怎样严格检验身份证号码?一个验证Javascript身份证号验证函数》要点:
本文介绍了怎样严格检验身份证号码?一个验证Javascript身份证号验证函数,希望对您有用。如果有疑问,可以联系我们。

如果需要PHP服务器端身份证验证类,查看这里:http://www.jb51.cc/jiaocheng/43.html

普通的身份证验证函数,都是只对身份证格式验证。而这个函数,则进一步验证了身份证有效与否。

<!DOCTYPE html>
<html lang=en>
<head>
       <meta charset=utf-8 />
       <title>严格的身份证号验证</title>
       <script src=http://libs.baidu.com/jquery/1.9.0/jquery.js></script>
</head>

<body>
<h3>严格的身份证号验证</h3>
<script type=text/javascript>

       function idCardCheck(idValue) {
              var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 1];// 加权因子;
 var ValideCode = [1, 0, 2];// 身份证验证位值,10代表X;

 if (idValue.length == 15)
              {
                     return isValidityBrithBy15IdCard(idValue);
              } else if (idValue.length == 18)  {
                     var a_idCard = idValue.split();// 得到身份证数组
 if (isValidityBrithBy18IdCard(idValue) && isTrueValidateCodeBy18IdCard(a_idCard))
                     {
                            return true;
                     }
                     return false;
              }
              return false;

              function isTrueValidateCodeBy18IdCard(a_idCard)
              {
                     var sum = 0; // 声明加权求和变量
 if (a_idCard[17].toLowerCase() == 'x')   {
                            a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作
 }
                     for (var i = 0; i < 17; i++) {
                            sum += Wi[i] * a_idCard[i];// 加权求和
 }
                     valCodePosition = sum % 11;// 得到验证码所位置
 if (a_idCard[17] == ValideCode[valCodePosition]) {
                            return true;
                     }
                     return false;
              }

              function isValidityBrithBy18IdCard(idCard18)
              {
                     var year = idCard18.substring(6, 10);
                     var month = idCard18.substring(10, 12);
                     var day = idCard18.substring(12, 14);
                     var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
                     // 这里用getFullYear()获取年份,避免千年虫问题
 if (temp_date.getFullYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day))
                     {
                            return false;
                     }
                     return true;
              }

              function isValidityBrithBy15IdCard(idCard15)
              {
                     var year = idCard15.substring(6, 8);
                     var month = idCard15.substring(8, 10);
                     var day = idCard15.substring(10, 12);
                     var temp_date = new Date(year, parseFloat(day));
                     // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法
 if (temp_date.getYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day))
                     {
                            return false;
                     }
                     return true;
              }
       }  // idCardCheck结束

 function  checkId(){
              var idCard =  $('input[name=idCard]').val();
              var isId =  idCardCheck(idCard);
              if(isId) $('span').html('正确的身份证号');
              else  $('span').html('错误的身份证号');
       }
</script>

<input type=text name=idCard onblur=checkId(); />
<span></span>
</body>
</html>

相关文章

kindeditor4.x代码高亮功能默认使用的是prettify插件,prett...
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小