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实现的网页颜色代码表全集
Jul 17 Javascript
Autocomplete Textbox Example javascript实现自动完成成功
Aug 17 Javascript
Jquery 一次处理多个ajax请求的代码
Sep 02 Javascript
常见的原始JS选择器使用方法总结
Apr 09 Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 Javascript
jquery实现先淡出再折叠收起的动画效果
Aug 07 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
Jul 09 Javascript
JS实现的几个常用算法
Nov 12 Javascript
利用ECharts.js画K线图的方法示例
Jan 10 Javascript
微信小程序实现星星评价效果
Nov 02 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
Mar 27 Javascript
深入学习Vue nextTick的用法及原理
Oct 08 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
我的论坛源代码(三)
2006/10/09 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
php中require和require_once的区别说明
2014/02/27 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
Python collections模块实例讲解
2014/04/07 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
什么是数组名
2012/05/10 面试题
办公室副主任岗位职责
2013/11/25 职场文书
大学运动会入场词
2014/02/22 职场文书
服装设计师求职信
2014/06/04 职场文书
合作协议书模板2014
2014/09/26 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang