身份证验证代码之——javascript篇


<script language=javascript>
function checkIdcard(idcard){

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:"国外"}

var idcard,Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
//地区检验
if(area[parseInt(idcard.substr(0,2))]==null) return 4;
//身份号码位数及格式检验
switch(idcard.length){
case 15:
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
} else {
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
}
if(ereg.test(idcard)) return 0;
else return 2;
break;
case 18:
//18位身份号码检测
//出生日期的合法性检查
//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
} else {
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
}
if(ereg.test(idcard)){//测试出生日期的合法性
//计算校验位
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
+ parseInt(idcard_array[7]) * 1
+ parseInt(idcard_array[8]) * 6
+ parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);//判断校验位
if(M == idcard_array[17]) return 0; //检测ID的校验位
else return 3;
}
else return 2;
break;
default:
return 1;
break;
}
}

        function CheckForm()
        {
        var Errors=new Array(
"验证通过!",
"身份证号码位数不对!",
"身份证号码出生日期超出范围或含有非法字符!",
"身份证号码校验错误!",
"身份证地区非法!"
);
        var result=checkIdcard(document.getElementById("txt_sfzmhm").value);
        if(result!=0)
        {
        alert(Errors[result]);
                document.getElementById("txt_sfzmhm").focus();
                return false;        
        }        
            if(document.getElementById("txt_djzsxxdz").value=="")
            {
                alert('请输入你的登记住所详细地址!');
                document.getElementById("txt_djzsxxdz").focus();
                return false;
            }
            return true;
        }

//================================================
//地区选择
function RemoveAllOption(obj)
{
  var len = obj.length-1;
  for(var i=len; i>=0; i--)
  {
     obj.options.remove(i);
  }
}
function AddEmptyOption(obj)
{
   obj.options.add(new Option("",""));
}
function FirstChangeOption1(ele,first,second,field)
{
  RemoveAllOption(second);
  second.options.add(new Option(first.options[first.selectedIndex].text,""));
  var TempOptionStr;
    var SkillCode = field.value;
    var currentValue = first.value;
    if (currentValue.length >= 2){
        var arrValue = SkillCode.split(";");
        for (var i=0;i<arrValue.length;i++){
            var arrOneValue = arrValue[i].split(",");
            if (currentValue.substr(0,2) == arrOneValue[0].substr(0,2)) {    //查找到合适的项目
             if( arrOneValue[0].length >2 && arrOneValue[0] != currentValue)
             {
                    TempOptionStr= ' '+arrOneValue[1];
                    second.options.add(new Option(TempOptionStr,arrOneValue[0]));
             }
            }
        }
    }
   if (second.options.length <= 1) {
   second.style.display='none'; document.getElementById(ele).value = first.value ;
   }
    else  second.style.display='';  }
function FirstChangeOption2(ele,first,second,third,field)
{
  RemoveAllOption(second);
  second.options.add(new Option(first.options[first.selectedIndex].text,""));  RemoveAllOption(third);
  AddEmptyOption(third);
  var TempOptionStr;
    var SkillCode = field.value;
    var currentValue = first.value;
    if (currentValue.length >= 2){
        var arrValue = SkillCode.split(";");
        for (var i=0;i<arrValue.length;i++){
            var arrOneValue = arrValue[i].split(",");
            if (currentValue.substr(0,2) == arrOneValue[0].substr(0,2)) {    //查找到合适的项目
                var IsZero = true;
                var ssub = arrOneValue[0].substr(4);
                for(var j=0; j<ssub.length;j++)
                {
                    if(ssub.substring(j,j+1) != "0")
                    {
                       IsZero = false;
                       break;
                    }
                }
             if(IsZero && arrOneValue[0]!=currentValue)
             {
                   TempOptionStr= ' '+arrOneValue[1];
                   second.options.add(new Option(TempOptionStr,arrOneValue[0]));
             }
            }
        }
    }
document.getElementById(ele).value = first.value;

if (second.options.length <= 1) second.style.display='none'; else second.style.display='';
if (third.options.length <= 1) third.style.display='none'; else third.style.display=''; }
function SecondChangeOption(ele,second,third,field)
{
  RemoveAllOption(third);
  third.options.add(new Option(second.options[second.selectedIndex].text.replace(' ',''),""));
    var TempOptionStr;
    var SkillCode = field.value;
    var currentValue = second.value;
    if (currentValue.length!=0){
        var arrValue = SkillCode.split(";");
        for (var i=0;i<arrValue.length;i++){
            var arrOneValue = arrValue[i].split(",");
            if (arrOneValue[0].length>4 && arrOneValue[0] != currentValue  && currentValue.substring(0,4) == arrOneValue[0].substr(0,4)) {    //查找到合适的项目
                TempOptionStr= ' '+arrOneValue[1];
                third.options.add(new Option(TempOptionStr,arrOneValue[0]));
            }
        }
    }
document.getElementById(ele).value = second.value;

if (third.options.length <= 1) third.style.display='none'; else third.style.display=''; }
function ThirdChangeOption(ele,third)
{
   document.getElementById(ele).value = third.value ;
  
  
}

        </script>


其中idcard为身份证号。

[本日志由 dashu126 于 2008-08-24 03:09 PM 编辑]
文章来自: 网络
引用通告: 查看所有引用 | 我要引用此文章
Tags: JS
相关日志:

评论: 1 | 引用: 0 | 查看次数: 13304
回复回复Verona[2017-07-23 01:33 PM | del]
Generally home interiors arе stuffed ѡith drama ɑnd jazz nevertheless, yߋu may bring it wіtһin yߋur exteriors toߋ and make уour property appeaг equally marvelous оutside.

Τhe rigһt of color combination can help you you could make ʏоur house attractive іnside neighborhood. Ӏt wοuld be imprudent tⲟ possess уour property oг office painted withoսt having a proper inspection іn tһе ߋutside caulking ɑnd professional painting companies offer tһis benefit.
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 开启