js身份证判断方法支持15位和18位


Posted in Javascript onMarch 18, 2014
//HTML页面上要有一个id为identity_card的input输入框,一个id为ipmessage的身份证错误或正确时提示消息的地方 
<script> 
//身份证验证 
$(document).ready(function(){ 
$("#identity_card").change(function(){ 
var idcard =$(this).val(); 
checkDate(idcard ); 
}); 
}); 
//身份证 
function checkDate( idcard ){ 
var socialNo = idcard; 
if(socialNo == "") 
{ 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert("输入身份证号码不能为空!"); 
return (false); 
} 
if (socialNo.length != 15 && socialNo.length != 18) 
{ 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert("输入身份证号码格式不正确!"); 
return (false); 
} 
var area={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(area[parseInt(socialNo.substr(0,2))]==null) { 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert("身份证号码不正确(地区非法)!"); 
return (false); 
} 
if (socialNo.length == 15) 
{ 
pattern= /^\d{15}$/; 
if (pattern.exec(socialNo)==null){ 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert("15位身份证号码必须为数字!"); 
return (false); 
} 
var birth = parseInt("19" + socialNo.substr(6,2)); 
var month = socialNo.substr(8,2); 
var day = parseInt(socialNo.substr(10,2)); 
switch(month) { 
case '01': 
case '03': 
case '05': 
case '07': 
case '08': 
case '10': 
case '12': 
if(day>31) { 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert('输入身份证号码不格式正确!'); 
return false; 
} 
break; 
case '04': 
case '06': 
case '09': 
case '11': 
if(day>30) { 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert('输入身份证号码不格式正确!'); 
return false; 
} 
break; 
case '02': 
if((birth % 4 == 0 && birth % 100 != 0) || birth % 400 == 0) { 
if(day>29) { 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert('输入身份证号码不格式正确!'); 
return false; 
} 
} else { 
if(day>28) { 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert('输入身份证号码不格式正确!'); 
return false; 
} 
} 
break; 
default: 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert('输入身份证号码不格式正确!'); 
return false; 
} 
var nowYear = new Date().getYear(); 
if(nowYear - parseInt(birth)<15 || nowYear - parseInt(birth)>100) { 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert('输入身份证号码不格式正确!'); 
return false; 
} 
$('#ipmessage').html('通过!'); 
return (true); 
} 
var Wi = new Array( 
7,9,10,5,8,4,2,1,6, 
3,7,9,10,5,8,4,2,1 
); 
var lSum = 0; 
var nNum = 0; 
var nCheckSum = 0; 
for (i = 0; i < 17; ++i) 
{ 
if ( socialNo.charAt(i) < '0' || socialNo.charAt(i) > '9' ) 
{ 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert("输入身份证号码格式不正确!"); 
return (false); 
} 
else 
{ 
nNum = socialNo.charAt(i) - '0'; 
} 
lSum += nNum * Wi[i]; 
} 
if( socialNo.charAt(17) == 'X' || socialNo.charAt(17) == 'x') 
{ 
lSum += 10*Wi[17]; 
} 
else if ( socialNo.charAt(17) < '0' || socialNo.charAt(17) > '9' ) 
{ 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert("输入身份证号码格式不正确!"); 
return (false); 
} 
else 
{ 
lSum += ( socialNo.charAt(17) - '0' ) * Wi[17]; 
} 
if ( (lSum % 11) == 1 ) 
{ 
$('#ipmessage').html('通过!'); 
return true; 
} 
else 
{ 
$('#ipmessage').html('输入身份证号码格式不正确,必须是15位到18位的身份证号'); 
alert("输入身份证号码格式不正确!"); 
return (false); 
} 
} 
</script>
Javascript 相关文章推荐
基于jquery tab切换(防止页面刷新)
May 23 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
javascript感应鼠标图片透明度显示的方法
Feb 24 Javascript
跟我学习javascript的prototype原型和原型链
Nov 18 Javascript
jquery自定义表单验证插件
Oct 12 Javascript
jQuery实现的简单悬浮层功能完整实例
Jan 23 Javascript
微信小程序 数据遍历的实现
Apr 05 Javascript
浅谈express 中间件机制及实现原理
Aug 31 Javascript
简谈创建React Component的几种方式
Jun 15 Javascript
JavaScript交换两个变量方法实例
Nov 25 Javascript
ES6学习笔记之let与const用法实例分析
Jan 22 Javascript
Vue管理系统前端之组件拆分封装详解
Aug 23 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
Mar 18 #Javascript
用js将内容复制到剪贴板兼容浏览器
Mar 18 #Javascript
javascript页面上使用动态时间具体实现
Mar 18 #Javascript
JS调用页面表格导出excel示例代码
Mar 18 #Javascript
javascript:window.open弹出窗口的位置问题
Mar 18 #Javascript
js判断iframe内的网页是否滚动到底部触发事件
Mar 18 #Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
Mar 18 #Javascript
You might like
php 购物车实例(申精)
2009/05/11 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
Python使用django搭建web开发环境
2017/06/09 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
python的移位操作实现详解
2019/08/21 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
python为什么要安装到c盘
2020/07/20 Python
日语专业个人求职信范文
2014/02/02 职场文书
计算机毕业生求职信
2014/06/10 职场文书
实验室标语
2014/06/21 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
MySQL派生表联表查询实战过程
2022/03/20 MySQL
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android