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 动态生成方法的例子
Jul 22 Javascript
jquery模拟按下回车实现代码
Sep 20 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
jQuery 中$(this).index与$.each的使用指南
Nov 20 Javascript
12个超实用的JQuery代码片段
Nov 02 Javascript
微信小程序 http请求详细介绍
Oct 09 Javascript
JavaScript中的工厂函数(推荐)
Mar 08 Javascript
简单实现JavaScript弹幕效果
Aug 27 Javascript
微信小程序自定义组件
Aug 16 Javascript
微信小程序如何获取地址
Dec 24 Javascript
React学习之受控组件与数据共享实例分析
Jan 06 Javascript
js数组的基本使用总结
Jan 18 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程序实现支持页面后退的两种方法
2008/06/30 PHP
php中取得文件的后缀名?
2012/02/20 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
JS 进度条效果实现代码整理
2011/05/21 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
Python3处理文件中每个词的方法
2015/05/22 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
anaconda如何查看并管理python环境
2019/07/05 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
Django REST framwork的权限验证实例
2020/04/02 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
销售自荐信
2013/10/22 职场文书
售后服务承诺书范文
2014/03/26 职场文书
入党介绍人评语
2014/05/06 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
2015年女工委工作总结
2015/07/27 职场文书
公司酒会致辞
2015/07/30 职场文书
GPU服务器的多用户配置方法
2022/07/07 Servers
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers