JS身份证号码验证函数 支持带x的号码

< script type = " text/javascript " >
alert(isIdCardNo(
" 440781197007220512 " ));
// --身份证号码验证-支持新的带x身份证
function isIdCardNo(num)
{
var factorArr = new Array( 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 , 6 , 3 , 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 );
var error;
var varArray = new Array();
var intValue;
var lngProduct = 0 ;
var intCheckDigit;
var intStrLen = num.length;
var idNumber = num;
// initialize
if ((intStrLen != 15 ) && (intStrLen != 18 )) {
// error = "输入身份证号码长度不对!";
// alert(error);
// frmAddUser.txtIDCard.focus();
return false ;
}
// check and set value
for (i = 0 ;i < intStrLen;i ++ ) {
varArray[i]
= idNumber.charAt(i);
if ((varArray[i] < ' 0 ' || varArray[i] > ' 9 ' ) && (i != 17 )) {
// error = "错误的身份证号码!.";
// alert(error);
// frmAddUser.txtIDCard.focus();
return false ;
}
else if (i < 17 ) {
varArray[i]
= varArray[i] * factorArr[i];
}
}
if (intStrLen == 18 ) {
// check date
var date8 = idNumber.substring( 6 , 14 );
if (checkDate(date8) == false ) {
// error = "身份证中日期信息不正确!.";
// alert(error);
return false ;
}
// calculate the sum of the products
for (i = 0 ;i < 17 ;i ++ ) {
lngProduct
= lngProduct + varArray[i];
}
// calculate the check digit
intCheckDigit = 12 - lngProduct % 11 ;
switch (intCheckDigit) {
case 10 :
intCheckDigit
= ' X ' ;
break ;
case 11 :
intCheckDigit
= 0 ;
break ;
case 12 :
intCheckDigit
= 1 ;
break ;
}
// check last digit
if (varArray[ 17 ].toUpperCase() != intCheckDigit) {
// error = "身份证效验位错误!...正确为: " + intCheckDigit + ".";
// alert(error);
return false ;
}
}
else { // length is 15
// check date
var date6 = idNumber.substring( 6 , 12 );
if (checkDate(date6) == false ) {
// alert("身份证日期信息有误!.");
return false ;
}
}
// alert ("Correct.");
return true ;
}

function checkDate(date)
{
return true ;
}
< / script>
/根据身份证判断性别和生日
<% @ Page language = " c# " Codebehind = " CordBirthday.aspx.cs " AutoEventWireup = " false " Inherits = " CodeDatum.birthday.CordBirthday " %>
<! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.0 Transitional//EN " >
< HTML >
< HEAD >
< title > CordBirthday < / title>
< meta name = " GENERATOR " Content = " Microsoft Visual Studio .NET 7.1 " >
< meta name = " CODE_LANGUAGE " Content = " C# " >
< meta name = " vs_defaultClientScript " content = " JavaScript " >
< meta name = " vs_targetSchema " content = " http://schemas.microsoft.com/intellisense/ie5 " >
< script language = " javascript " >
function showBirthday(val)
{
var birthdayValue;
if ( 15 == val.length)
{
// 15位身份证号码
birthdayValue = val.charAt( 6 ) + val.charAt( 7 );
if (parseInt(birthdayValue) < 10 )
{
birthdayValue
= ' 20 ' + birthdayValue;
}
else
{
birthdayValue
= ' 19 ' + birthdayValue;
}
birthdayValue
= birthdayValue + ' - ' + val.charAt( 8 ) + val.charAt( 9 ) + ' - ' + val.charAt( 10 ) + val.charAt( 11 );
if (parseInt(val.charAt( 14 ) / 2)*2!=val.charAt(14))
document.all.sex.value = ' ' ;
else
document.all.sex.value
= ' ' ;
document.all.birthday.value
= birthdayValue;
}
if ( 18 == val.length)
{
// 18位身份证号码
birthdayValue = val.charAt( 6 ) + val.charAt( 7 ) + val.charAt( 8 ) + val.charAt( 9 ) + ' - ' + val.charAt( 10 ) + val.charAt( 11 )

+ ' - ' + val.charAt( 12 ) + val.charAt( 13 );
if (parseInt(val.charAt( 16 ) / 2)*2!=val.charAt(16))
document.all.sex.value = ' ' ;
else
document.all.sex.value
= ' ' ;
if (val.charAt( 17 ) != IDCard(val))
{
document.all.idCard.style.backgroundColor
= ' #ffc8c8 ' ;
}
else
{
document.all.idCard.style.backgroundColor
= ' white ' ;
}
document.all.birthday.value
= birthdayValue;
}
}

// 18位身份证号最后一位校验
function IDCard(Num)
{
if (Num.length != 18 )
return false ;
var x = 0 ;
var y = '' ;

for (i = 18 ;i >= 2 ;i -- )
x
= x + (square( 2 ,(i - 1 )) % 11 ) * parseInt(Num.charAt( 19 - i - 1 ));
x
%= 11 ;
y
= 12 - x;
if (x == 0 )
y
= ' 1 ' ;
if (x == 1 )
y
= ' 0 ' ;
if (x == 2 )
y
= ' X ' ;
return y;
}

// 求得x的y次方
function square(x,y)
{
var i = 1 ;
for (j = 1 ;j <= y;j ++ )
i
*= x;
return i;
}
< / script>
< / HEAD>
< body MS_POSITIONING = " GridLayout " >
< form id = " Form1 " method = " post " runat = " server " >
< table align = " center " >
< tr >
< td align = " center " > 身份证: < input type = " text " name = " idCard " id = " idCard " >< / td>
< / tr>
< tr >
< td align = " center " > 性 别: < input type = " text " name = " sex " id = " sex " >< / td>
< / tr>
< tr >
< td align = " center " > 生 日: < input type = " text " name = " birthday " id = " birthday " >< / td>
< / tr>
< tr >
< td align = " center " >< input type = " button " onclick = " showBirthday(document.all.idCard.value) " value = " OK " >< / td>
< / tr>
< / table>
< / form>
< / body>
< / HTML>

转载于:https://www.cnblogs.com/lfzm/archive/2011/05/24/2055939.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值