最严格的身份证校验(JavaScript版)
在JavaWeb研发过程中为了获取有效的用户信息,校验其数据的有效性非常是必要,以下贴出在项目中用到的关于身份证的校验:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
            <head>
                  <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
                  <title>身份证校验</title>
                  <script type="text/javascript" src="./jquery-1.6.2.js"></script>
                  <script type="text/javascript">
                        function checkCertificateNo(){
                              var certificateNo = $("#certificateNo").val();//身份证号码
                              if(certificateNo.length != 18){
                                    alert("身份证号码无效,请使用第二代身份证!!!"); 
                              }else{
                                    var address = certificateNo.substring(0,6);//6位,地区代码
                                    var birthday = certificateNo.substring(6,14);//8位,出生日期
                                    var sequenceCode =  certificateNo.substring(14,17);//3位,顺序码:奇为男,偶为女
                                    var checkCode =  certificateNo.substring(17);//1位,校验码:检验位
                                    console.log("身份证号码:"+certificateNo+"、地区代码:"+address+"、出生日期:"+birthday+"、顺序码:"+sequenceCode+"、校验码:"+checkCode);
                                    var province={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:"国外"};
                                    var year =  birthday.substring(0,4);   
                                    var month = birthday.substring(4,6);   
                                    var day = birthday.substring(6);
                                    var tempDate = new Date(year,parseFloat(month)-1,parseFloat(day)); 
                                    if(province[parseInt(address.substr(0,2))] == null || (tempDate.getFullYear()!=parseFloat(year) || tempDate.getMonth()!=parseFloat(month)-1 || tempDate.getDate()!=parseFloat(day))){//这里用getFullYear()获取年份,避免千年虫问题
                                          alert("身份证号码无效,请又一次输入!!!");
                                    }else{
                                          var weightedFactors = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];//加权因子   
                                          var valideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];// 身份证验证位值,当中10代表X
                                          var certificateNoArray =certificateNo.split("");// 得到身份证数组
                                          var sum = 0;// 声明加权求和变量
                                          if (certificateNoArray[17].toLowerCase() == 'x') {
                                                certificateNoArray[17] = 10;// 将最后位为x的验证码替换为10  
                                          }
                                         for ( var i = 0; i < 17; i++) {
                                               sum += weightedFactors[i] * certificateNoArray[i];// 加权求和   
                                        }
                                        valCodePosition = sum % 11;// 得到验证码所在位置
                                       if (certificateNoArray[17] == valideCode[valCodePosition]) {
                                              var sex = "男";
                                             if(sequenceCode%2==0){
                                                    sex = "女";
                                              }
                                             alert("身份证号码有效,性别为:"+sex+"!");
                                        } else {
                                             alert("身份证号码无效,请又一次输入!!!");
                                        }
                                   }
                             }
                        }
                   </script>
            </head>
            <body>
                  <input id = "certificateNo" name = "certificateNo" value = "61072919761109762X"/>
    <input type="button" onclick="checkCertificateNo();" value = "開始校验"/>
            </body>
</html>
最严格的身份证校验(JavaScript版)的更多相关文章
- 完整的JavaScript版的信用卡校验代码
		function isValidCreditCard(type, ccnum) { if (type == "Visa") { // Visa: length 16, prefix ... 
- JavaScript版EAN码校验算法
		<script type="text/javascript"> $(document).ready(function () { $("#btnCalc&q ... 
- JavaScript版拼图小游戏
		慕课网上准备开个新的jQuery教程,花了3天空闲时间写了一个Javascript版的拼图小游戏,作为新教程配套的分析案例 拼图游戏网上有不少的实现案例了,但是此源码是我自己的实现,所以不做太多的比较 ... 
- 篇二:JS身份证校验
		身份证校验 function identityCodeValid(code) { var city={11:"北京",12:"天津",13:"河北&q ... 
- 前端优秀作品展示,JavaScript 版水果忍者
		<水果忍者>是一款非常受喜欢的手机游戏,刚看到新闻说<水果忍者>四周年新版要上线了.网页版的切水果游戏由百度 JS 小组开发,采用 vml + svg 绘图,使用了 Rapha ... 
- javascript日历控件——纯javascript版
		平时只有下班时间能code,闲来写了个纯javascript版.引用该calendar.js文件,然后给要设置成日历控件的input的id设置成calendar,该input就会变成日历控件. < ... 
- 在线聊天室的实现(1)--websocket协议和javascript版的api
		前言: 大家刚学socket编程的时候, 往往以聊天室作为学习DEMO, 实现简单且上手容易. 该Demo被不同语言实现和演绎, 网上相关资料亦不胜枚举. 以至于很多技术书籍在讲解网络相关的编程时, ... 
- Powerbuilder编写身份证校验码
		public function boolean of_calc_cardid_verifycode (string as_cardid, ref string as_verifycode); /* 计 ... 
- java实现身份证校验
		原文来自:java教程网 题目:身份证校验 身份证校验 如果让你设计个程序,用什么变量保存身份证号码呢?长整数可以吗?不可以! 因为有人的身份证最后一位是"X" 实 ... 
随机推荐
- 前后端差异更小了——浅谈ES(ECMAScript)6
			2015年6月,ES6正式发布.至今一年多的时间内,各个浏览器也对支持ES6做出了很大的改善,所以同学们无需顾忌你写代码的浏览器不认识~ 这么久的东西一定早有大神剖析过,今天我们以一个后端菜鸟的视角重 ... 
- asp.net mvc4 Controller与Action执行过程的研究(学习笔记)
			当IIS收到一个http请求,把请求信息发给对应的HttpModel(实际是实现类UrlRoutingModule),在HttpModel中会注册HttpApplication 类中的PostReso ... 
- JNI/NDK开发指南(开山篇)
			转载请注明出处:http://blog.csdn.net/xyang81/article/details/41759643 相信很多做过Java或Android开发的朋友经常会接触到JNI方面的技术, ... 
- 【POJ 1639】 Picnic Planning (最小k度限制生成树)
			[题意] 有n个巨人要去Park聚会.巨人A和先到巨人B那里去,然后和巨人B一起去Park.B君是个土豪,他家的停车场很大,可以停很多车,但是Park的停车场是比较小.只能停k辆车.现在问你在这个限制 ... 
- 李洪强漫谈iOS开发[C语言-029] - 关系运算符
- jni.h头文件详解一
			1.jni.h头文件路径: /usr/lib/jvm/jdk_1.6.0_43/include/jni.h 2.jni.h头文件组成分析图: 3.下面通过上图进行分析讲解jni.h头文件. 一. jn ... 
- Android上按钮解决快速点击问题
			//代码2 public abstract class NoDoubleClickListener implements OnClickListener { ... 
- StorSimple 简介
			 2014年 10月 28日,星期二 PRACHEETI NAGARKAR DESAI 混合云存储业务资深项目经理 在此我很荣幸地宣布StorSimple解决方案已经在中国正式上市.该方案为IT部 ... 
- FusionCharts 3.2.1 flash 图表展示、数据钻取
			StackedColumn3DLineDY.swf 效果展示: 一.页面代码 <div id="chart2div" align="center" sty ... 
- 搭建Git远程仓库(也就是Git服务器,不用再连Github了)
			github上一般托管的代码都是公开的,任何人都可以查看.复制下载等,而私有的项目则需要付费.所以可以自己搭建一个git服务,自己人用. 首先安装git: sudo apt-get install g ... 
