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 相关文章推荐
自制基于jQuery的智能提示插件一枚
Feb 18 Javascript
javascript:void(0)使用探讨
Aug 27 Javascript
jquery的选择器的使用技巧之如何选择input框
Sep 22 Javascript
jquery插件推荐 jquery.cookie
Nov 09 Javascript
JavaScript实现重置表单(reset)的方法
Apr 02 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
May 24 Javascript
Vue兼容ie9的问题全面解决方案
Jun 19 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
Sep 03 Javascript
JavaScript原型对象原理与应用分析
Dec 27 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
Feb 28 Javascript
vue-resource post数据时碰到Django csrf问题的解决
Mar 13 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
Jul 28 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 源代码压缩小工具
2009/12/22 PHP
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
php之CodeIgniter学习笔记
2013/06/17 PHP
php提交post数组参数实例分析
2015/12/17 PHP
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
基于vue-element组件实现音乐播放器功能
2018/05/06 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
python新手经常遇到的17个错误分析
2014/07/30 Python
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
Python字典简介以及用法详解
2016/11/15 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
某公司面试题
2012/03/05 面试题
计算机专业毕业生自我鉴定
2014/01/16 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
2016情人节宣传语
2015/07/14 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python