免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1352 | 回复: 0
打印 上一主题 下一主题

身份证 验证 JS [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 02:00 |只看该作者 |倒序浏览
  1. //--身份证号码验证-支持新的带x身份证
  2. function isIdCardNo(num) {
  3.     var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
  4.     var error;
  5.     var varArray = new Array();
  6.     var intValue;
  7.     var lngProduct = 0;
  8.     var intCheckDigit;
  9.      var intStrLen = num.length;
  10.      var idNumber = num;
  11.      // initialize
  12.      if ((intStrLen != 15) && (intStrLen != 18)) {
  13.          //error = "输入身份证号码长度不对!";
  14.          //alert(error);
  15.          //frmAddUser.txtIDCard.focus();
  16.          return false;
  17.      }
  18.      // check and set value
  19.      for(i=0;i<intStrLen;i++) {
  20.          varArray[i] = idNumber.charAt(i);
  21.          if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
  22.              //error = "错误的身份证号码!.";
  23.              //alert(error);
  24.              //frmAddUser.txtIDCard.focus();
  25.              return false;
  26.          } else if (i < 17) {
  27.              varArray[i] = varArray[i]*factorArr[i];
  28.          }
  29.      }
  30.      if (intStrLen == 18) {
  31.          //check date
  32.          var date8 = idNumber.substring(6,14);
  33.          if (checkDate(date8) == false) {
  34.              //error = "身份证中日期信息不正确!.";
  35.              //alert(error);
  36.              return false;
  37.          }
  38.          // calculate the sum of the products
  39.          for(i=0;i<17;i++) {
  40.              lngProduct = lngProduct + varArray[i];
  41.          }
  42.          // calculate the check digit
  43.          intCheckDigit = 12 - lngProduct % 11;
  44.          switch (intCheckDigit) {
  45.              case 10:
  46.                  intCheckDigit = 'X';
  47.                  break;
  48.              case 11:
  49.                  intCheckDigit = 0;
  50.                  break;
  51.              case 12:
  52.                  intCheckDigit = 1;
  53.                  break;
  54.          }
  55.          // check last digit
  56.          if (varArray[17].toUpperCase() != intCheckDigit) {
  57.              //error = "身份证效验位错误!正确为: " + intCheckDigit + ".";
  58.              //alert(error);
  59.              return false;
  60.          }
  61.      }
  62.      else{ //length is 15
  63.          //check date
  64.          var date6 = idNumber.substring(6,12);
  65.          if (checkDate(date6) == false) {
  66.              //alert("身份证日期信息有误!.");
  67.              return false;
  68.          }
  69.      }
  70.      //alert ("Correct.");
  71.      return true;
  72.  }
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP