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 相关文章推荐
用JavaScript脚本实现Web页面信息交互
Oct 11 Javascript
拖动一个HTML元素
Dec 22 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
Dec 12 Javascript
js形成页面的一种遮罩效果实例代码
Jan 04 Javascript
EasyUI折叠表格层次显示detailview详解及实例
Dec 28 Javascript
微信小程序 css使用技巧总结
Jan 09 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
elementUI多选框反选的实现代码
Apr 03 Javascript
深入了解js原型模式
May 30 Javascript
解决vuex刷新状态初始化的方法实现
Aug 15 Javascript
JavaScript ES6 Class类实现原理详解
May 08 Javascript
uniapp引入支付宝原生扫码插件步骤详解
Jul 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
Yii获取当前url和域名的方法
2015/06/08 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
Python中的sort()方法使用基础教程
2017/01/08 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
查看django版本的方法分享
2018/05/14 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
数据库方面面试题
2012/04/22 面试题
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
毕业自我评价范文
2013/11/17 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
小学生元旦广播稿
2014/02/21 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
详解Laravel制作API接口
2021/05/31 PHP
Go timer如何调度
2021/06/09 Golang
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
Python IO文件管理的具体使用
2022/03/20 Python