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 indexOf使用方法
Aug 19 Javascript
通过js简单实现将一个文本内容转译成加密文本
Oct 22 Javascript
jquery 获取dom固定元素 添加样式的简单实例
Feb 04 Javascript
一个可以增加和删除行的table并可编辑表格中内容
Jun 16 Javascript
javascript中eval函数用法分析
Apr 25 Javascript
jQuery Easyui实现左右布局
Jan 26 Javascript
深入理解$.each和$(selector).each
May 15 Javascript
AngularJS基础 ng-dblclick 指令用法
Aug 01 Javascript
JavaScript使用readAsDataURL读取图像文件
May 10 Javascript
js实现分页功能
May 24 Javascript
vue项目上传Github预览的实现示例
Nov 06 Javascript
Vue的编码技巧与规范使用详解
Aug 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 if 想到的些问题
2008/03/22 PHP
PHP通用检测函数集合
2011/02/08 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
javascript 写类方式之四
2009/07/05 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
JQuery扩展对象方法操作示例
2018/08/21 jQuery
使用python实现接口的方法
2017/07/07 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
Python如何绘制日历图和热力图
2020/08/07 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
节约用水的口号
2014/06/20 职场文书
新颖的化妆品活动方案
2014/08/21 职场文书
四风问题查摆材料
2014/08/25 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript