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 相关文章推荐
JS在IE和FF下attachEvent,addEventListener学习笔记
Nov 26 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
Mar 01 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
Jun 01 Javascript
Css3制作变形与动画效果
Jul 24 Javascript
jquery mobile 移动web(5)
Dec 20 Javascript
js右下角弹出提示框示例代码
Jan 12 Javascript
JSON简介以及用法汇总
Feb 21 Javascript
浅析javaScript中的浅拷贝和深拷贝
Feb 15 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
Nov 24 Javascript
JavaScript实现二维坐标点排序效果
Jul 18 Javascript
详解vue axios中文文档
Sep 12 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
Oct 09 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
php MessagePack介绍
2013/10/06 PHP
总结对比php中的多种序列化
2016/08/28 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
禁止空格提交表单的js代码
2013/11/17 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
利用NPM淘宝的node.js镜像加速nvm
2017/03/27 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
Python的装饰器使用详解
2017/06/26 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
初学者学习Python好还是Java好
2020/05/26 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
教师党员批评与自我批评
2014/10/15 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
城南旧事观后感
2015/06/11 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
Golang生成Excel文档的方法步骤
2021/06/09 Golang
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL