js 代码
- <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为身份证号。
原文地址【http://www.hxhnet.com/article.asp?id=165】