JS练手:18位身份证号码验证

原创 2007年09月18日 11:34:00
   简易18位身份证号码验证
可以验证身份证长度,格式,日期,校验码的正确性,对于地区码要想验证比较复杂,没有对其处理,有需要的朋友可以到中华人民共和国国家统计局网站上看下各个时期的行政区划代码(http://www.stats.gov.cn/tjbz/xzqhdm/index.htm
< html >
< head >
< META  http-equiv ="pragma"  content ="no-cache" >
< META  http-equiv ="Cache-Control"  content ="no-cache" >
< META  http-equiv ="Expires"  content ="0" >
< META  http-equiv ='content-type'  content ="text/html; charset=gb2312" >
< META  http-equiv ="Content-Style-Type"  content ="text/css" >
< style >
div
{
    width
: 100% ;
    text-align
: center ;
    color
: blue ;
    font-size
: 12pt ;
    background-color
:;
}

tbody
{
    font-size
: 10pt ;
}

tr
{
    height
: 30px ;
}

td
{
    text-align
: left ;
    vertical-align
: middle ;
}

.textbox
{
    text-align
: center ;
}

.button
{
    width
: 70px ;
    cursor
: hand ;
}

.fl:first-letter
{
    color
: red ;
    font-size
: 15pt ;
    font-weight
: bolder ;
    font-style
: italic ;
    text-decoration
:;
}

</ style >
< script  type ='text/javascript' >

var  vertifyStr  =   " 10X98765432 " ;
var  wiArray  =   new  Array( 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 , 6 , 3 , 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 );

function  anlyseIDCard()
{
    
var  idcard  =  document.getElementById( ' cidcard ' ).value;
    
var  reg  =   new  RegExp( /^ d { 17 } (d | x)$ / gi);
    
if ( ! reg.test(idcard))
    
{
        document.getElementById(
' error ' ).style.display = "" ;
        
return ;
    }
else {
        document.getElementById(
' error ' ).style.display = " none " ;
    }


    
var  result  =   0 ;
    result 
+=  checkArea(idcard);
    result 
+=  checkBirthday(idcard);
    result 
+=  checkSort(idcard);
    result 
+=  checkVertify(idcard);
    
if (result  ==   0 )
    
{
        document.getElementById(
' checkresult ' ).innerText  =  unescape( ' %u6709%u6548%u7684%u8EAB%u4EFD%u8BC1%u53F7%u7801%uFF01 ' );
    }

    
else
    
{
        document.getElementById(
' checkresult ' ).innerText  =  unescape( ' %u65E0%u6548%u7684%u8EAB%u4EFD%u8BC1%u53F7%u7801%uFF01 ' );
    }


}


function  checkArea(idcard)
{
    
return  showResult( true , ' darea ' ,idcard.substring( 0 , 6 ));
}


function  checkBirthday(idcard)
{
    
var  bir  =  idcard.substring( 6 , 14 );
    
return  showResult(isDate(bir), ' dbirthday ' ,bir);
}


function  checkSort(idcard)
{
    
return  showResult( true , ' dsort ' ,idcard.substring( 14 , 17 ));
}


function  checkVertify(idcard)
{
    
var  id  =  idcard.substring( 0 , 17 );
    
var  vty1  =  idcard.substring( 17 , 18 );
    
var  vty2  =  getVertifyChar(id)
    
return  showResult(vty1.toUpperCase()  ==  vty2, ' dvertify ' ,vty1);
}


function  getVertifyChar(str)
{
    
var  total  =   0 ;
    
for ( var  i  =   0 ; i  <=  str.length; i ++ )
    
{
        total 
+=  eval(str.charAt(i) * wiArray[i]);
    }

    total 
=  total % 11 ;
    
return  vertifyStr.charAt(total);
}


function  showResult(flg,id,val) {
    
with (document.getElementById(id)) {
        innerText 
=  val;
        
if ( ! flg) {
            style.color
= ' red ' ;
            
return   1 ;
        }
else {
            style.color
= ' blue ' ;
            
return   0 ;
        
        }

    }

}


function  cwrite(ustr)
{
    document.write(unescape(ustr));
}


function  appChars(num, char ,length)
{
    
var  str  =  num.toString( 10 );
    
while (str.length < length)
    
{
        str
= char + str;
    }

    
return  str;
}


function  isDate(str)
{
    
if (str.length  !=   8 return   false ;
    
var  date  =   new  Date(str.substring( 0 , 4 ),eval(str.substring( 4 , 6 ) - 1 ),str.substring( 6 , 8 ));
    
var  str2  =  appChars(date.getFullYear(), " 0 " , 4 ) + appChars(eval(date.getMonth() + 1 ), " 0 " , 2 ) + appChars(date.getDate(), " 0 " , 2 );
    
if (str  ==  str2)
        
return   true ;
    
else
        
return   false ;
}


function  isNumber(str)
{
    
var  re  =   new  RegExp( /^ d { 1 ,} $ / g);
    
return  re.test(str);
}

</ script >
</ head >
< body >
< hr  color ='blue' />
< table  border ='1'  cellspacing  = '0'  cellpadding ='0'  width ='780px'  align ='center' >
< caption  style ="color:blue" > Check IDCard </ caption >
< tbody >
    
< tr >
        
< td  style ="width:20%;text-align:right;" >< script > cwrite( ' %u8981%u9A8C%u8BC1%u7684%u53F7%u7801%uFF1A ' ); </ script ></ td >
        
< td  style ="width:80%;" >
            
< input  class ='textbox'   type ='text'  style ='width:200px'  id ='cidcard'  />
            
< input  class ='button'  type ='button'  value ='Check'  onclick ='anlyseIDCard();' />
            
< font  id ='error'  style ="display:none;color:red;font-size:9pt;" >< script > cwrite( ' %u53F7%u7801%u683C%u5F0F%u4E0D%u6B63%u786E%uFF01 ' ); </ script ></ font >
        
</ td >
    
</ tr >
    
< tr >
        
< td  colspan ='2'  style ="width:100%;" >
< table  border ='0'  cellspacing  = '1'  cellpadding ='2'  width ='100%'  align ='center' >
< tbody >
    
< tr >
        
< th >< script > cwrite( ' %u5730%u5740%u7801 ' ); </ script ></ th >
        
< th >< script > cwrite( ' %u51FA%u751F%u65E5%u671F ' ); </ script ></ th >
        
< th >< script > cwrite( ' %u987A%u5E8F%u7801 ' ); </ script ></ th >
        
< th >< script > cwrite( ' %u6821%u9A8C%u7801 ' ); </ script ></ th >
    
</ tr >
    
< tr  style ='background-color:#eeeeee' >
        
< td >< div  id ='darea' ></ div ></ td >
        
< td >< div  id ='dbirthday' ></ div ></ td >
        
< td >< div  id ='dsort' ></ div ></ td >
        
< td >< div  id ='dvertify' ></ div ></ td >
    
</ tr >
</ tbody >
</ table >
        
< td >
    
</ tr >
    
< tr >
        
< td  style ='color:blue;text-align:right;' >
            
< script > cwrite( ' %u9A8C%u8BC1%u7ED3%u679C%uFF1A ' ); </ script >
        
</ td >
        
< td >
            
< div  id ='checkresult'  class ='fl'  style ='font-size:10pt;text-align:left;' ></ div >
        
</ td >
    
</ tr >
</ tbody >
</ table >
< hr  color ='blue' >
</ body >
</ html >
 

相关文章推荐

JS校验身份证号码(15位和18位)

http://www.w3.org/TR/html4/loose.dtd"> 校验身份证号码 function checkIdCard(card){ var vcit...
  • wtwshui
  • wtwshui
  • 2013年02月19日 16:30
  • 729

JS校验身份证号码(15位和18位)

http://www.w3.org/TR/html4/loose.dtd"> 校验身份证号码   function checkIdCard(card){   var vc...
  • xwnxwn
  • xwnxwn
  • 2012年06月05日 08:23
  • 6533

js中15位及18位身份证号码的校验

15位身份证结构: 地区代码(6位),年(2位)月(2位)日(2位),顺序码(3位,最后1位偶数代表女,奇数代表男) 18位身份证结构: 地区代码(6位),年(4位)月(2位)日(2位),顺序码(3...

18位身份证号码验证代码

  • 2010年12月14日 17:05
  • 119KB
  • 下载

面向对象的15位、18位中国大陆身份证号码解析、验证工具

import java.text.SimpleDateFormat; import java.util.Date; /** * 身份证号码,可以解析身份证号码的各个字段,以及验证身份证号码是否有效...

Jquery 对 身份证号码的验证 (15/18位)

//欢迎验证、给予指正错误,从好多地方查来的资料修改的...已用本人身份证验证... 由于以前修改的问题无法验证带 X 的身份证号码,已修复! //为值添加0             funct...
  • shwicho
  • shwicho
  • 2012年01月06日 14:43
  • 7260

JS 验证15位以及18位身份证

  • 2011年08月01日 17:30
  • 5KB
  • 下载

验证身份证号码格式 C# 支持18位 15位新旧版身份证

支持18位 15位新旧版身份证 /// 验证身份证是否有效 public static bool IsIDCard18 ( string Id ) { long n = 0; if ( ...

新旧身份证合法性验证及相互转换算法(三):Java身份证号码验证及将15位转换18位

package test; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 身份证号码验证...

身份证号码升18位工具

  • 2011年05月25日 10:04
  • 12KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS练手:18位身份证号码验证
举报原因:
原因补充:

(最多只允许输入30个字)