idCard.js部分*******************************************************

//****************************************************************************

// 构造函数,变量为15位或者18位的身份证号码
function clsIDCard(CardNo) {
  this.Valid=false;
  this.ID15='';
  this.ID18='';
  this.Local='';
  if(CardNo!=null)this.SetCardNo(CardNo);
}

// 设置身份证号码,15位或者18位
clsIDCard.prototype.SetCardNo = function(CardNo) {
  this.ID15='';
  this.ID18='';
  this.Local='';
  CardNo=CardNo.replace(" ","");
  var strCardNo;
  if(CardNo.length==18) {
    pattern= /^\d{17}(\d|x|X)$/;
    if (pattern.exec(CardNo)==null)return;
    strCardNo=CardNo.toUpperCase();
  } else {
    pattern= /^\d{15}$/;
    if (pattern.exec(CardNo)==null)return;
    strCardNo=CardNo.substr(0,6)+'19'+CardNo.substr(6,9)
    strCardNo+=this.GetVCode(strCardNo);
  }
  this.Valid=this.CheckValid(strCardNo);
}

// 校验身份证有效性
clsIDCard.prototype.IsValid = function() {
  return this.Valid;
}

// 返回生日字符串,格式如下,1981-10-10
clsIDCard.prototype.GetBirthDate = function() {
  var BirthDate='';
  if(this.Valid)BirthDate=this.GetBirthYear()+'-'+this.GetBirthMonth()+'-'+this.GetBirthDay();
  return BirthDate;
}

// 返回生日中的年,格式如下,1981
clsIDCard.prototype.GetBirthYear = function() {
  var BirthYear='';
  if(this.Valid)BirthYear=this.ID18.substr(6,4);
  return BirthYear;
}

// 返回生日中的月,格式如下,10
clsIDCard.prototype.GetBirthMonth = function() {
  var BirthMonth='';
  if(this.Valid)BirthMonth=this.ID18.substr(10,2);
  if(BirthMonth.charAt(0)=='0')BirthMonth=BirthMonth.charAt(1);
  return BirthMonth;
}

// 返回生日中的日,格式如下,10
clsIDCard.prototype.GetBirthDay = function() {
  var BirthDay='';
  if(this.Valid)BirthDay=this.ID18.substr(12,2);
  return BirthDay;
}

// 返回性别,1:男,0:女
clsIDCard.prototype.GetSex = function() {
  var Sex='';
  if(this.Valid)Sex=this.ID18.charAt(16)%2;
  return Sex;
}

// 返回15位身份证号码
clsIDCard.prototype.Get15 = function() {
  var ID15='';
  if(this.Valid)ID15=this.ID15;
  return ID15;
}

// 返回18位身份证号码
clsIDCard.prototype.Get18 = function() {
  var ID18='';
  if(this.Valid)ID18=this.ID18;
  return ID18;
}

// 返回所在省,例如:上海市、浙江省
clsIDCard.prototype.GetLocal = function() {
  var Local='';
  if(this.Valid)Local=this.Local;
  return Local;
}

clsIDCard.prototype.GetVCode = function(CardNo17) {
  var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
  var Ai = new Array('1','0','X','9','8','7','6','5','4','3','2');
  var cardNoSum = 0;
  for (var i=0; i<CardNo17.length; i++)cardNoSum+=CardNo17.charAt(i)*Wi[i];
  var seq = cardNoSum%11;
  return Ai[seq];
}

clsIDCard.prototype.CheckValid = function(CardNo18) {
  if(this.GetVCode(CardNo18.substr(0,17))!=CardNo18.charAt(17))return false;
  if(!this.IsDate(CardNo18.substr(6,8)))return false;
  var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
  if(aCity[parseInt(CardNo18.substr(0,2))]==null)return false;
  this.ID18=CardNo18;
  this.ID15=CardNo18.substr(0,6)+CardNo18.substr(8,9);
  this.Local=aCity[parseInt(CardNo18.substr(0,2))];
  return true;
}

clsIDCard.prototype.IsDate = function(strDate) {
  var r = strDate.match(/^(\d{1,4})(\d{1,2})(\d{1,2})$/);
  if(r==null)return false;
  var d= new Date(r[1], r[2]-1, r[3]);
  return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[2]&&d.getDate()==r[3]);
}

页面测试**************************************************************

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>身份证验证</title>
<script src="idCard.js"></script>
</head>
<body>
<script>
 function valiIdCard(idCard){
  var checkFlag = new clsIDCard(idCard);
  if (!checkFlag.IsValid()) {
   alert("输入的身份证号无效,请输入真实的身份证号!");
   document.getElementByIdx("idCard").focus();
   return false;
  }else{
    alert("正确!");
  }
 }

</script>
<input id="idCard" type="text" οnblur="valiIdCard(this.value)"/>
</body>

js 验证身份证号码相关推荐

  1. js验证身份证号码包括最后一位字母

    通过正则进行js验证身份证号码: var numRegex = /^([a-zA-Z\d_]{1,18})$/;if (!numRegex.test(val)) {return '请输入身份证号码或格 ...

  2. js验证身份证号码是否正确(整理)

    使用:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/ if(!(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(v ...

  3. js 验证身份证号码正确性

    今天找半天js验证身份证的,从网上找了很多,自己也总结了一下,在此记录,以便以后使用查询方便,也供大家参考. 代码如下,可直接用 function isIdCardNo(num) { num = nu ...

  4. JS验证身份证号码合法性

    <html> <head> <script type="text/javascript">     function validateCard( ...

  5. JS正则表达式验证身份证号码

    function isCardNo(card) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{1 ...

  6. JS(JavaScript)验证身份证号码格式的合法性

    一.JS(JavaScript)验证身份证号码格式的合法性,前端工程师会用到JavaScript验证身份证号码是否合法,这里分享一段本人多年以前多写的JavaScript验证输入身份证号码合法性的代码 ...

  7. 【JS】Js二代身份证号码正则验证

    Js二代身份证号码正则验证代码: export function checkIDCard(idcode) {// 加权因子var weight_factor = [7,9,10,5,8,4,2,1,6 ...

  8. js实现身份证号码验证(组成结构以及验证原理)

    今天一个客户反馈过来说用户身份证不能输入字母"X",让我看看怎么回事.看到客户发过来的截图,原来限制了只能输入数字.这个修改起来简单,二话不说打开代码,由于代码是同事写的,仔细看了 ...

  9. JS正则表达式验证身份证号码、真实姓名

    js验证身份证号: var idNo = $('#id_card_no').val(); var regIdNo = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$) ...

最新文章

  1. szucodeforce训练1081C组合数学lucas定理,div2 627的D dfs +剪枝优化,697D Puzzles{dfs序+概率}
  2. Linux内核学习笔记十一——I/O层和I/O调度机制
  3. ASP.NET初识4
  4. 【android】窗口管理
  5. springMVC解析视图
  6. Android应用开发(15)---字符串资源
  7. 读书笔记-《JavaScript高级程序设计》-第2章 在HTML中使用JavaScript
  8. asp.net mvc mysql 开源项目_【开源项目SugarSite】ASP.NET MVC+ Layui+ SqlSugar+RestSharp项目讲解...
  9. usaconbsp;chapternbsp;2.1nbsp;castle
  10. SpringBoot整合Memcached
  11. 京东、搜狗“带狗”都好好的,为何司机对快狗打车不满意?
  12. Java实现按分数排名,同分同名次
  13. 预约洗车/美容/维修/家政/保养/上门洗车预约小程序源码及管理系统
  14. matlab中plot画图的颜色线型
  15. 解决warning C4305: 'initializing' : truncation from 'const double' to 'float'
  16. php rpm是什么,1. 区分 rpm -qi -qf -ql -qa四个不同选项组合的作用?
  17. 电脑加载,电脑加载慢又卡怎么办
  18. Cosmos 白皮书
  19. python requests常见用法总结
  20. 使用 tcpcopy 线上导流及回放

热门文章

  1. Spring Cloud微服务之模块依赖修改(六)
  2. 部分主流sns平台的账号登录及api操作
  3. linux系统中scp命令的用法
  4. PL/SQL中的=作用
  5. 用srand时间数种子来生成随机数
  6. Linux pwd命令:显示当前路径
  7. JupyterNotebook配置远程登录
  8. Java——volatile关键字详解
  9. linux 下wine 和plyaonlinux 安装以及卸载 (linux下运行windows软件的神器)
  10. 编码-京东实习笔试编程题-生日礼物-动态规划