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

  <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>