我的这个javascript验证怎么样和表单结合到一块呢

WBOY
Release: 2016-06-23 14:12:31
Original
812 people have browsed it

<script> <br /> function checkIdcard(idcard1){ <br /> var idcard=document.forms[0].elements[idcard1].value; <br /> var Errors=new Array( <br /> "验证通过!", <br /> "身份证号码位数不对!", <br /> "身份证号码出生日期超出范围或含有非法字符!", <br /> "身份证号码校验错误!", <br /> "身份证地区非法!" <br /> ); <br /> 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:"国外"} <br /> <br /> var idcard,Y,JYM; <br /> var S,M; <br /> var idcard_array = new Array(); <br /> idcard_array = idcard.split(""); <br /> /*地区检验*/ <br /> if(area[parseInt(idcard.substr(0,2))]==null) <br /> { <br /> alert(Errors[4]); <br /> return false; <br /> } <br /> /*身份号码位数及格式检验*/ <br /> switch(idcard.length){ <br /> case 15: <br /> 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 )){ <br /> 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}$/;//测试出生日期的合法性 <br /> } else { <br /> 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}$/;//测试出生日期的合法性 <br /> } <br /> if(ereg.test(idcard)){ <br /> alert(Errors[0]+"15"); <br /> return false; <br /> } <br /> else { <br /> alert(Errors[2]); <br /> return false; <br /> } <br /> break; <br /> <br /> case 18: <br /> //18位身份号码检测 <br /> //出生日期的合法性检查 <br /> //闰年月日:((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])) <br /> //平年月日:((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])) <br /> if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){ <br /> 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]$/;//闰年出生日期的合法性正则表达式 <br /> } else { <br /> 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]$/;//平年出生日期的合法性正则表达式 <br /> } <br /> if(ereg.test(idcard)){//测试出生日期的合法性 <br /> //计算校验位 <br /> S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 <br /> + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 <br /> + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 <br /> + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 <br /> + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 <br /> + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 <br /> + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 <br /> + parseInt(idcard_array[7]) * 1 <br /> + parseInt(idcard_array[8]) * 6 <br /> + parseInt(idcard_array[9]) * 3 ; <br /> Y = S % 11; <br /> M = "F"; <br /> JYM = "10X98765432"; <br /> M = JYM.substr(Y,1);/*判断校验位*/ <br /> if(M == idcard_array[17]){ <br /> alert(Errors[0]+"18"); <br /> return false; /*检测ID的校验位*/ <br /> } <br /> else { <br /> alert(Errors[3]); <br /> return false; <br /> } <br /> } <br /> else { <br /> alert(Errors[2]); <br /> return false; <br /> } <br /> break; <br /> <br /> default: <br /> alert(Errors[1]); <br /> return false; <br /> <br /> } <br /> </script>



  
  

回复讨论(解决方案)

还是没有反映呀

你怎么写的,看下控制台下报什么错了。

这样写

<script>function checkIdcard(form, idcard1){ //改成这样比较通用var idcard = form[idcard1].value;var Errors=new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!");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) {   alert(Errors[4]);    return false;}/*身份号码位数及格式检验*/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)){     alert(Errors[0]+"15");      return false;    }   else {     alert(Errors[2]);      return false;     }   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]){     alert(Errors[0]+"18");      return false; /*检测ID的校验位*/    }    else {     alert(Errors[3]);      return false;    }   }   else {    alert(Errors[2]);     return false;   }   break;     default:    alert(Errors[1]);     return false;  } //这里原来少了个“{”}</script><form id="form1" name="form1" method="post" action="" onsubmit="return checkIdcard(this, 'textfield')">  <input type="text" name="textfield" />  <label>  <input type="submit" name="Submit" value="提交" />  </label></form>
Copy after login

多谢xuzuning!!!!
还有一个小问题  我用的Utf-8
var idcard = form[idcard1].value;
var Errors=new Array(
"验证通过!",
"身份证号码位数不对!",
"身份证号码出生日期超出范围或含有非法字符!",

替换成从语言包调取内容

var idcard = form[idcard1].value;
var Errors=new Array(
"'{$lang.owner_card1}'",
"{$lang.owner_card2}",

这两个都不行  出乱码  不在javascript  这样可以读取的

还有就是这几个都加上单引号  验证有时会失灵
"'{$lang.owner_card1}'",
"{$lang.owner_card2}",

模板?
既然是用 utf-8 编码的,那么形如 {$lang.owner_card1} 的也需要赋值为 utf-8 的串

提示信息是否被单引号括起,只是显示效果的不同而已。不会影响一傲剑的判断

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template