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和DOM Interfaces来处理HTML
Oct 09 Javascript
锋利的jQuery jQuery中的DOM操作
Mar 21 Javascript
B/S模式项目中常用的javascript汇总
Dec 17 Javascript
JavaScript中实现sprintf、printf函数
Jan 27 Javascript
详解JavaScript基本类型和引用类型
Dec 09 Javascript
判断JS对象是否拥有某属性的方法推荐
May 12 Javascript
微信小程序 页面之间传参实例详解
Jan 13 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
Feb 28 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
Jun 13 Javascript
JavaScript实现三级级联特效
Nov 05 Javascript
详解关于html,css,js三者的加载顺序问题
Apr 10 Javascript
原生js实现针对Dom节点的CRUD操作示例
Aug 26 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
php流量统计功能的实现代码
2012/09/29 PHP
PHP Session机制简介及用法
2014/08/19 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
python获取当前日期和时间的方法
2015/04/30 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
python实现UDP协议下的文件传输
2020/03/20 Python
pyqt5中动画的使用详解
2020/04/01 Python
Django如何批量创建Model
2020/09/01 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
C语言面试题
2015/10/30 面试题
理工大学毕业生自荐信
2013/11/01 职场文书
大学生旅游业创业计划书
2014/01/29 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
女生节标语
2014/06/26 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
学前班语言教学计划
2015/01/20 职场文书
Vue如何清空对象
2022/03/03 Vue.js