Chinaunix首页 | 论坛 | 博客
  • 博客访问: 755557
  • 博文数量: 160
  • 博客积分: 2516
  • 博客等级: 大尉
  • 技术积分: 1511
  • 用 户 组: 普通用户
  • 注册时间: 2004-10-24 17:58
文章分类

全部博文(160)

文章存档

2019年(2)

2018年(3)

2017年(15)

2016年(3)

2015年(11)

2014年(3)

2013年(1)

2012年(3)

2011年(17)

2010年(25)

2009年(17)

2008年(13)

2007年(14)

2006年(21)

2005年(10)

2004年(2)

分类: 系统运维

2011-09-29 16:00:16

  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.  }
阅读(1700) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~