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 相关文章推荐
网页中实现浏览器的最大,最小化和关闭按钮
Mar 12 Javascript
一个JQuery写的点击上下滚动的小例子
Aug 27 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
Jun 26 Javascript
原生js和jquery实现图片轮播淡入淡出效果
Apr 23 Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 Javascript
vue登录注册及token验证实现代码
Dec 14 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
Dec 21 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
Jul 26 Javascript
vue axios基于常见业务场景的二次封装的实现
Sep 21 Javascript
d3绘制基本的柱形图的实现代码
Dec 12 Javascript
JavaScript实现多文件下载方法解析
Aug 07 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 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
url decode problem 解决方法
2011/12/26 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
2018/02/02 jQuery
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
python检测远程端口是否打开的方法
2015/03/14 Python
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
Python 转换文本编码实现解析
2019/08/27 Python
详解Python实现进度条的4种方式
2020/01/15 Python
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
枚举和一组预处理的#define有什么不同
2016/09/21 面试题