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动画1.加载指示器
Aug 24 Javascript
js模拟C#中List的简单实例
Mar 06 Javascript
Node.js中的缓冲与流模块详细介绍
Feb 11 Javascript
Jquery异步提交表单代码分享
Mar 26 Javascript
JS中的forEach、$.each、map方法推荐
Apr 05 Javascript
JavaScript动态生成二维码图片
Apr 20 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
Dec 23 Javascript
使用JavaScript中的lodash编写双色球效果
Jun 24 Javascript
vue2使用keep-alive缓存多层列表页的方法
Sep 21 Javascript
使用webpack搭建pixi.js开发环境
Feb 12 Javascript
JS制作简易计算器的实例代码
Jul 04 Javascript
JS闭包原理及其使用场景解析
Dec 03 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分页效率终结版(推荐)
2013/07/01 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
2020/05/09 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
简单谈谈python的反射机制
2016/06/28 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
python地震数据可视化详解
2019/06/18 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
临床医学大学生求职信
2013/09/28 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL