前段时间一直在做一个人才网站,里面用到了大量的Javascript代码,虽说很多都是从百度和别的网站上拷下来的,不过要把它们正确的用到自己网站上也是花费了我不少功夫的。其中有几段代码,是我找了n久也找不到完整的合适的,于是自己编出来的。现在就把它们贴出来,希望能帮到像我一样菜的鸟!
一、身份证验证
很多网页上都有身份证验证,不过大多是vbscript,javascript的n少。而且还不全面。身份证号码的组成结构,就不用我赘述了吧,在百度上一搜一大把的。
就说怎么验证得了:身份证验证首先是要验证字数、以及除了末尾能用字母外其它的都应该是数字。其次就是两点最重要的,出生年月日和户口所在地。
以下是引用片段: function isValidDate( year, month, day ) { year = parseInt(year,10); month = parseInt(month,10); day = parseInt(day,10); if (( month==4) || (month==6) || (month==9) || (month==11) ) { if (( day < 1) || (day > 30) ) { alert( "日期在1 - 30之间" ); return (false); } } else { if ( month!=2 ) { if ( (day < 1) || (day > 31 )) { alert( "日期在1 - 31之间" ); return (false); } } else { // month == 2 if ( ( year % 100 ) != 0 && (year % 4 == 0) || ( year % 100 ) == 0 && ( year % 400) == 0 ) { if ( day > 29 ) { alert( "日期在1 - 29之间" ); return (false); } } else { if ( day > 28 ) { alert( "日期在1 - 28之间" ); return (false); } } } } return (true); } function isIdCardNo(s) { if ((s.length <15)||(s.length ==16)||(s.length ==17)||(s.length >18)){ window.alert("身份证位数不正确!"); return false; } slen=s.length-1;//身份证除最后一位外,必须为数字! for (i=0; i<slen; i++) { cc = s.charAt(i); if (cc <"0" || cc >"9") { return false; } } //提取年月日 var strYear = parseInt(s.substring(6,10)) var strMonth = parseInt(s.substring(10,12)) var strDay = parseInt(s.substring(12,14)) // Form1.year的代码根据个人情况变动 var vYear=parseInt(document.Form1.year.options[document.Form1.year.selectedIndex].text) var vMonth=parseInt(document.Form1.month.options[document.Form1.month.selectedIndex].text) var vDay=parseInt(document.Form1.day.options[document.Form1.day.selectedIndex].text) //判断输入的出生年月日是否是正确的日期 if(!isValidDate(strYear,strMonth,strDay)) { window.alert("请检查身份证是否输入正确!"); return false; } //判断是否与出生年月日吻合 if((strYear!=vYear)||(strMonth!=vMonth)||(strDay!=vDay)) { window.alert("身份证号与输入的出生年月日不符!"); return false; } //document.Form1.ceshi.value=strMonth //document.Form1.ceshi2.value=vMonth return true; } | 因为我不知道身份证上户口所在地的值是用什么规则规定的,而且也没必要验证的那么详细。就没有做户口验证。
不过我觉得,应该是大同小异的吧,只要判断form里户口选择select的值和身份证里户口对应的位数是否相等就ok了。
s.substring(6,10)就是用来截取字段的。从第六位到第十位。
|