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 相关文章推荐
In Javascript Class, how to call the prototype method.(three method)
Jan 09 Javascript
可以将word转成html的js代码
Apr 11 Javascript
JS延迟加载加快页面打开速度示例代码
Dec 30 Javascript
JavaScript 学习笔记之操作符(续)
Jan 14 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
Sep 15 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
Nov 03 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
Jun 29 Javascript
Express使用html模板的详细代码
Sep 18 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 Javascript
Angular5中调用第三方js插件的方法
Feb 26 Javascript
js合并两个数组生成合并后的key:value数组
May 09 Javascript
Vue头像处理方案小结
Jul 26 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 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
php导出word格式数据的代码实例
2013/11/25 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
学习ExtJS accordion布局
2009/10/08 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
pandas 根据列的值选取所有行的示例
2018/11/07 Python
对python 中class与变量的使用方法详解
2019/06/26 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
python使用BeautifulSoup 解析HTML
2022/04/24 Python