javascript实现验证身份证号的有效性并提示


Posted in Javascript onApril 30, 2015

javascript实现验证身份证号的有效性并提示

function nunber(allowancePersonValue){ 
 if(allowancePersonValue=="身份证号"){ 
 $("#span_username").show(); 
 $("#span_username").html("身份证号不能为空"); 
 return false; 
 } 
 //校验长度,类型 
 else if(isCardNo(allowancePersonValue) === false) 
 { 
$("#span_username").show(); 
 $("#span_username").html("您输入的身份证号码不正确,请重新输入"); 
 return false; 
 } 
 //检查省份 
 else if(checkProvince(allowancePersonValue) === false) 
 { 
 $("#span_username").show(); 
 $("#span_username").html("您输入的身份证号码不正确,请重新输入"); 
 return false; 
 } 
 //校验生日 
 else if(checkBirthday(allowancePersonValue) === false) 
 { 
 $("#span_username").show(); 
 $("#span_username").html("您输入的身份证号码生日不正确,请重新输入"); 
 return false; 
 } 
 //检验位的检测 
 else if(checkParity(allowancePersonValue) === false) 
 { 
 $("#span_username").show(); 
 $("#span_username").html("您的身份证校验位不正确,请重新输入"); 
 return false; 
 }else{ 
 $("#span_username").hide(); 
 return true; 
 } 
 
} 
 
//身份证省的编码 
var vcity={ 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:"国外" 
    }; 
 
//检查号码是否符合规范,包括长度,类型 
function isCardNo(card){ 
 //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X 
 var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/; 
 if(reg.test(card) === false){ 
 //alert("demo"); 
 return false; 
 } 
 return true; 
} 
 
//取身份证前两位,校验省份 
function checkProvince(card){ 
 var province = card.substr(0,2); 
 if(vcity[province] == undefined){ 
 return false; 
 } 
 return true; 
} 
 
//检查生日是否正确 
function checkBirthday(card){ 
 var len = card.length; 
 //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字 
 if(len == '15'){ 
   var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/; 
   var arr_data = card.match(re_fifteen); 
   var year = arr_data[2]; 
   var month = arr_data[3]; 
   var day = arr_data[4]; 
   var birthday = new Date('19'+year+'/'+month+'/'+day); 
   return verifyBirthday('19'+year,month,day,birthday); 
 } 
 //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X 
 if(len == '18'){ 
   var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/; 
   var arr_data = card.match(re_eighteen); 
   var year = arr_data[2]; 
   var month = arr_data[3]; 
   var day = arr_data[4]; 
   var birthday = new Date(year+'/'+month+'/'+day); 
   return verifyBirthday(year,month,day,birthday); 
 } 
 return false; 
} 
 
//校验日期 
function verifyBirthday(year,month,day,birthday){ 
 var now = new Date(); 
 var now_year = now.getFullYear(); 
 //年月日是否合理 
 if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) 
 { 
   //判断年份的范围(3岁到100岁之间) 
   var time = now_year - year; 
   if(time >= 3 && time <= 100) 
   { 
     return true; 
   } 
   return false; 
 } 
 return false; 
} 
 
//校验位的检测 
function checkParity(card){ 
 //15位转18位 
 card = changeFivteenToEighteen(card); 
 var len = card.length; 
 if(len == '18'){ 
   var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); 
   var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); 
   var cardTemp = 0, i, valnum; 
   for(i = 0; i < 17; i ++) 
   { 
     cardTemp += card.substr(i, 1) * arrInt[i]; 
   } 
   valnum = arrCh[cardTemp % 11]; 
   if (valnum == card.substr(17, 1)) 
   { 
     return true; 
   } 
   return false; 
 } 
 return false; 
} 
 
//15位转18位身份证号 
function changeFivteenToEighteen(card){ 
 if(card.length == '15') 
 { 
   var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); 
   var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); 
   var cardTemp = 0, i;  
   card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6); 
   for(i = 0; i < 17; i ++) 
   { 
     cardTemp += card.substr(i, 1) * arrInt[i]; 
   } 
   card += arrCh[cardTemp % 11]; 
   return card; 
 } 
 return card; 
}

使用方法:

<input type="text" class="reg_txt" value="身份证号" titles="请输入您的身份证号!" name="userid" id="username" maxlength="40" onfocus="if(this.value=='身份证号'){this.value='';}" onblur="if(this.value==''){this.value='身份证号';}nunber(this.value);" style="border: 1px solid red;"><br> 
<span class="c_red" id="span_username"></span>

效果为输入身份证号,焦掉移开后自动验证,并返回信息!

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
延时重复执行函数 lLoopRun.js
May 08 Javascript
用dom+xhtml+css制作的一个相册效果代码打包下载
Jan 24 Javascript
javascript vvorld 在线加密破解方法
Nov 13 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
Dec 12 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
javascript工厂方式定义对象
Dec 26 Javascript
JavaScript中使用参数个数实现重载功能
Sep 01 Javascript
vue.js计算属性computed用法实例分析
Jul 06 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
Sep 13 Javascript
微信小程序textarea层级过高的解决方法
Mar 04 Javascript
实现一个 Vue 吸顶锚点组件方法
Jul 10 Javascript
vue.js路由mode配置之去掉url上默认的#方法
Nov 01 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
Apr 30 #Javascript
jquery实现键盘左右翻页特效
Apr 30 #Javascript
jquery Validation表单验证使用详解
Sep 12 #Javascript
jQuery实现企业网站横幅焦点图切换功能实例
Apr 30 #Javascript
JS实现动态移动层及拖动浮层关闭的方法
Apr 30 #Javascript
javascript实时获取鼠标坐标值并显示的方法
Apr 30 #Javascript
javascript实现鼠标拖动改变层大小的方法
Apr 30 #Javascript
You might like
如何判断php数组的维度
2013/06/10 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
JS逆序遍历实现代码
2014/12/02 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
微信小程序实现留言板
2018/10/31 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
Python检测QQ在线状态的方法
2015/05/09 Python
Saltstack快速入门简单汇总
2016/03/01 Python
python获取url的返回信息方法
2018/12/17 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
flask应用部署到服务器的方法
2019/07/12 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
django正续或者倒序查库实例
2020/05/19 Python
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
个人简历自我鉴定
2013/10/11 职场文书
测量工程专业求职信
2014/02/24 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
党的群众路线教育实践活动个人整改措施范文
2014/11/04 职场文书
golang操作rocketmq的示例代码
2022/04/06 Golang