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 相关文章推荐
node.js WEB开发中图片验证码的实现方法
Jun 03 Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
Feb 27 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
May 21 Javascript
jQuery实现的自定义弹出层效果实例详解
Sep 04 Javascript
Javascript 引擎工作机制详解
Nov 30 Javascript
JS日程管理插件FullCalendar简单实例
Feb 07 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
Mar 02 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
May 17 jQuery
node实现简单的反向代理服务器
Jul 26 Javascript
基于react组件之间的参数传递(详解)
Sep 05 Javascript
微信小程序激励式视频广告组件使用详解
Dec 06 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中的正规表达式(一)
2006/10/09 PHP
如何在php中正确的使用json
2013/08/06 PHP
php动态变量定义及使用
2015/06/10 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
实习生自荐信范文
2013/11/13 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
先进集体事迹材料
2014/02/17 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
《失物招领》教学反思
2016/02/20 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers
尝试使用Python爬取城市租房信息
2022/04/12 Python
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers