/*说明 ------------------------------------------------------------------------------------- 函数名:InputCheck(InputEle) InputEle 为要检测的元素,这个元素的class为格式化信息:输入类型|必要性|最小长度|最大长度 返回:message and false or true 格式化信息: 输入类型: txt 1-文本(不能包含非法字符) num 2-数字(0123456789) val 3-数值(0123456789.) tel 4-电话号码(020-83559078) mob 5-手机号码(11位0123456789) dat 6-日期(YYYY-MM-DD) tim 7-时间(HH:MM:SS) sel 8-选择(值为-1时表示未选择) img 9-图像文件路径 eml 10-电子邮箱格式 idc 11-身份证 必要性: y 1-必要 n 0-不一定 最小长度:0 最大长度:2147483647 eg:<input class="txt|y|0|10" > 表示输入为文本,且是必要的,最小长度为0,最大长度为10 --------------------------------------------------------------------------------- */ function InputCheck(InputEle){ var ClassName=new String();//信息格式化:输入类型|必要性|最小长度|最大长度 var availChar=new String(); var invalChar=new String(); var InputValue=new String(); var alertTitle=new String(); var i=0; try{ClassName=InputEle.myClass;}catch(e){return;} if (typeof ClassName == "undefined" || ClassName == null) return true; var arr=ClassName.split("|"); var InputType="txt"; //默认为文本 var Need="n"; //默认无限制 var minLen=0; //默认无限制 var maxLen=0; //默认无限制 var minVal="err"; var maxVal="err"; if (InputEle.disabled==true){ return true ; } if (arr.length>0){ InputType=arr[0]; } if (arr.length>1){ Need=arr[1]; } if (arr.length>2){ minLen=arr[2]; } if (arr.length>3){ maxLen=arr[3]; } if (arr.length>4){ minVal=arr[4]; } if (arr.length>5){ maxVal=arr[5]; } InputValue = InputEle.value; alertTitle = InputEle.title; //必要性检测 if (Need=="y"){ if(InputValue.length ==0){ alert(alertTitle + " 不能为空" ); try { InputEle.focus(); InputEle.select(); }catch(ex){} return false; } } if(InputValue.length>0){//存在值时检测最小长度,最大长度 if(minLen!=0&&InputValue.length <minLen){ alert(alertTitle + " 不能小于 " + minLen.toString() +" 位"); InputEle.focus(); InputEle.select(); return false; } if(maxLen!=0&&InputValue.length >maxLen){ alert(alertTitle + " 不能大于 " + maxLen.toString() +" 位"); InputEle.focus(); InputEle.select(); return false; } } switch(InputType){//输入类型 case "txt"://1-文本(不能包含字符"‘%()") /*invalChar="=‘[email protected]#$%^&*()"; for(i=0;i<invalChar.length;i++ ){ if(InputValue.indexOf(invalChar.substr(i,1))>=0){ alert (alertTitle + " 不能包含字符 " +invalChar); InputEle.focus(); InputEle.select(); return false; } }*/ return true; case "num"://2-数字(0123456789) availChar="0123456789"; for(i=0;i<InputValue.length;i++ ){ if(availChar.indexOf(InputValue.substr(i,1))<0){ alert (alertTitle + " 只能由字符 " +availChar +" 构成"); InputEle.focus(); InputEle.select(); return false; } } return true; case "val"://3-数值(0123456789.) availChar="0123456789."; for(i=0;i<InputValue.length;i++ ){ if(availChar.indexOf(InputValue.substr(i,1))<0){ alert (alertTitle + " 只能由字符 " +availChar +" 构成"); InputEle.focus(); InputEle.select(); return false; } } if(minVal!="err"&&parseFloat(InputValue)<parseFloat(minVal)&&InputValue.length>0){ alert (alertTitle + " 必须大于" +minVal.toString()); InputEle.focus(); InputEle.select(); return false; } if(maxVal!="err"&&parseFloat(InputValue)>parseFloat(maxVal)&&InputValue.length>0){ alert (alertTitle + " 必须小于" +maxVal.toString()); InputEle.focus(); InputEle.select(); return false; } return true; case "tel"://电话号码(020-83559078) availChar="0123456789-"; for(i=0;i<InputValue.length;i++ ){ if(availChar.indexOf(InputValue.substr(i,1))<0){ alert (alertTitle + " 只能由字符 " +availChar +" 构成"); InputEle.focus(); InputEle.select(); return false; } } return true; case "mob"://5-手机号码(11位0123456789) availChar="0123456789"; if (InputValue.length==0){return true;} if (InputValue.length!=11){ alert (alertTitle + "只能是11位的数字构成"); InputEle.focus(); InputEle.select(); return false; } for(i=0;i<InputValue.length;i++ ){ if(availChar.indexOf(InputValue.substr(i,1))<0){ alert (alertTitle + "只能是11位的数字构成"); InputEle.focus(); InputEle.select(); return false; } } return true; case "dat"://6-日期(YYYY-MM-DD) var FormatFlag=0; var ValidFlag=0; var Index1=InputValue.indexOf("-"); var Index2=InputValue.lastIndexOf("-"); var ObjYear=InputValue.substring(0,4); var ObjMonth=1; var ObjDate=1; var LastDate = new Date(2002,2,2,0,0,0,0); if(InputValue.length!=0) { if (Index1==4) { if (InputValue.length==10 && Index2==7) { ObjMonth=InputValue.substring(5,7); ObjDate=InputValue.substring(8,10); FormatFlag=1; } if (InputValue.length==9 && Index2==7) { ObjMonth=InputValue.substring(5,7); ObjDate=InputValue.substring(8,9); FormatFlag=1; } if (InputValue.length==9 && Index2==6) { ObjMonth=InputValue.substring(5,6); ObjDate=InputValue.substring(7,9); FormatFlag=1; } if (InputValue.length==8 && Index2==6) { ObjMonth=InputValue.substring(5,6); ObjDate=InputValue.substring(7,8); FormatFlag=1; } } if (FormatFlag!=1 || InputValue.indexOf(".")!=-1) { ValidFlag=1; } if( isNaN(ObjMonth) || ObjMonth>12 || ObjMonth<=0 ) { ValidFlag=1; } LastDate.setYear(ObjYear); LastDate.setMonth(ObjMonth); LastDate.setDate(0); //Get the last date of the month. if( isNaN(ObjDate) || ObjDate>LastDate.getDate() || ObjDate<=0 ) { ValidFlag=1; } if( ValidFlag==1 ) { alert ("日期格式为YYYY-MM-DD:日期无效!") InputEle.focus(); InputEle.select(); return false; } if( isNaN(ObjYear) || ObjYear<1753 ) { alert ("日期格式为YYYY-MM-DD:年份不能小于1753!") InputEle.focus(); InputEle.select(); return false; } } return true; case "tim"://7-时间(HH:MM:SS) if (InputValue.length!=0){ if (InputValue.length!=8){ alert ("时间格式为HH:MM:SS") InputEle.focus(); InputEle.select(); return false; } if (InputValue.indexOf(":")!=2||InputValue.lastIndexOf(":")!=5 ){ alert ("时间格式为HH:MM:SS") InputEle.focus(); InputEle.select(); return false; } var tmp=InputValue.substr(0,2) availChar="0123456789"; for(i=0;i<tmp.length;i++ ){ if(availChar.indexOf(InputValue.substr(i,1))<0||parseInt(tmp)>24){ alert ("时间格式为HH:MM:SS") InputEle.focus(); InputEle.select(); return false; } } tmp=InputValue.substr(3,2) for(i=0;i<tmp.length;i++ ){ if(availChar.indexOf(InputValue.substr(i,1))<0||parseInt(tmp)>60){ alert ("时间格式为HH:MM:SS") InputEle.focus(); InputEle.select(); return false; } } tmp=InputValue.substr(6,2) for(i=0;i<tmp.length;i++ ){ if(availChar.indexOf(InputValue.substr(i,1))<0||parseInt(tmp)>60){ alert ("时间格式为HH:MM:SS") InputEle.focus(); InputEle.select(); return false; } } } return true; case "sel"://选择(值为-1时表示未选择) if (InputValue==-1){ alert("必须选择 "+ alertTitle); InputEle.focus(); //InputEle.select(); return false; } return true; case "img":// 图像文件 if (InputValue.length==0){ return true; } var img=document.createElement("img") ; img.src=InputValue ; if (img.fileSize<0){//不是有效的图像 alert(InputValue +"不是有效的图像"); InputEle.focus(); InputEle.select(); return false; } return true; case "eml"://电子邮箱 if(Need=="n"&&i==0) { return true; } var pattern = /^([a-zA-Z0-9_-])+(\.([a-zA-Z0-9_-])+)*@([a-zA-Z0-9_-])+(\.([a-zA-Z0-9_-])+)+$/; var flag = pattern.test(InputValue); if(!flag) { alert(" E - Mail格式不正确!") InputEle.focus(); InputEle.select(); return false; } return true; case "idc"://身份证 for(i=0;i<InputValue.length;) i++; if(i==15) { availChar="0123456789"; for(m=0;m<InputValue.length;m++ ) if(availChar.indexOf(InputValue.substr(m,1))<0) { alert ("15位"+alertTitle + " 只能由字符 " +availChar +" 构成"); InputEle.focus(); InputEle.select(); return false; } } else if(i==18) { availChar1="0123456789xX"; availChar="0123456789"; for(m=0;m<17;m++ ) if(availChar.indexOf(InputValue.substr(m,1))<0) { alert ("前17位"+alertTitle + " 只能由字符 " +availChar +" 构成"); InputEle.focus(); InputEle.select(); return false; } if(availChar1.indexOf(InputValue.substr(17,1))<0) { alert (alertTitle + " 只能由字符 " +availChar1 +" 构成"); InputEle.focus(); InputEle.select(); return false; } } else { if(Need=="n"&&i==0) { return true; } alert(" 身份证位数不正确!") InputEle.focus(); InputEle.select(); return false; } return true; } } function CheckAllInput(){ var f; for(var i=0;i<document.all.length;i++){ try{ f=InputCheck(document.all.item(i)); }catch(e){} if (f==false){ //event.returnValue=false; return false; } } return true; } function CheckSubmit(oFrm,sAction,sMethod){ //oFrm 为所提交From的对象 //sAction 为所提交From的action //sMethod 为所提交From的method event.returnValue=false; if(CheckAllInput()!=false){ if (sAction!=""){oFrm.action=sAction;} if (sMethod!=""){oFrm.method=sMethod;} oFrm.submit(); } }
时间: 2024-10-13 20:07:10