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非法字符过滤代码(骂人的话等等)
May 26 Javascript
js二级地域选择的实现方法
Jun 17 Javascript
javascript使用location.search的示例
Nov 05 Javascript
javascript trim函数在IE下不能用的解决方法
Sep 12 Javascript
Jquery注册事件实现方法
May 18 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
Aug 11 Javascript
jQuery旋转木马式幻灯片轮播特效
Dec 04 Javascript
纯js三维数组实现三级联动效果
Feb 07 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
Jul 04 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
Jul 10 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
Jan 18 jQuery
js实现幻灯片轮播图
Aug 14 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如何透过ODBC来存取数据库
2006/10/09 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
python的多重继承的理解
2017/08/06 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
python cs架构实现简单文件传输
2020/03/20 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
python flask搭建web应用教程
2019/11/19 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
造价工程师个人求职信
2013/09/21 职场文书
保安员岗位职责
2013/11/17 职场文书
金融专业毕业生推荐信
2013/11/26 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
社区护士演讲稿
2014/08/27 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
2014年评职称工作总结
2014/11/20 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python