页面输入完整性是编写BS经常遇到的问题,如果那里需要就到那里写,那可是要花不少的时候,并且造成不必要的浪费,下面是一个通过校验脚本,使用非常方便,通过传入FORM名就可以进行校验,通过在页面控件中增加用户本身自定义属性,进行方便的验证,包括数字的输入、密码的输入、EMAIL的输入,用户本身可以进行无限的扩展,使用如下,在页面中加入如下代码:
<formname="form1">
<inputtype="text"name="t1"req="0"size="20"><br>
<inputtype="text"name="t2"req="0"size="20"><br>
<inputtype="text"name="t3"req="0"size="20"><br>
<inputtype="text"name="t4"req="1"size="20"><br>
<inputtype="text"name="t5"req="1"customtype="email"displayname="电子邮件"size="20"><br>
<inputtype="button"name="bt"value="check"onclick="checkForm(document.form1)">
</form>
并在页头加以包含以下代码的JS脚本:
varcustomtypes=newArray("num","plus","int","email","link","password","name","date","money","date8");
varcustommessage=newArray(
"不是一个有效的数字。",
"不是一个有效的正整数。",
"不是一个有效的整数。",
"不是一个有效的电子邮件地址。",
"不是一个有效的链接,请确认输入了完整的地址,例如http://www.cnlist.com。",
"不是一个有效的密码,密码只能使用字母、下划线与数字,不能包含符号与空格。",
"不是一个有效的名称,名称只能使用字母、下划线与数字,不能包含符号与空格。",
"不是一个有效的日期。",
"不是一个有效的money格式。",
"不是一个有效的8位日期,如:20050801。"
);
functioncheckForm(oForm){
window.event.returnValue=false;
for(vari=0;i<oForm.all.tags("input").length;i++){
varele=oForm.all.tags("input")[i];
varct=ele.getAttribute("customtype");
varreq=ele.getAttribute("req");
vardn=ele.getAttribute("displayname");
if(null==dn){
dn=ele.name;
}
dn="“"+dn+"”";
if(ele.value!=null){
ele.value=ele.value.replace(/%/g,"%");
}
varnr=newString(ele.value);
if("1"==req){
if(nr.length<1){
alert(dn+"不可以省略,请重新输入。");
//ele.focus();
focusIt(ele);
returnfalse;
}
}
if((''==req||'0'==req||null==req)&&(ele.value==""))continue;//不必要且没有输入时,下一个
if(((""==req)||(null==ct))&&(ele.value==""))continue;
//检查自定义类型
//纠正自定义类型在req不等于1时仍要求输入的bug
if(("1"==req)||(nr.length>0)){
for(varj=0;j<customtypes.length;j++){
if(ct==customtypes[j]){
if(ct=="money"){
eval("varrtn=check_"+customtypes[j]+"(ele);");
}else{
eval("varrtn=check_"+customtypes[j]+"(ele.value);");
}
if(!rtn){
alert(dn+custommessage[j]);
//ele.focus();
focusIt(ele);
returnfalse;
}
}
}
}
}
window.event.returnValue=true;
returntrue;
}
functioncheck_money(s){
s.value=s.value.replace(/,/g,"")
varre=/^(\+|-)?\d+(.\d+)?$/i;
returnre.test(s.value);
}
functioncheck_email(s){
varre=/^\w+@(\w)+((.(\w)+)+)?$/i;
returnre.test(s);
}
functioncheck_num(s){
varre=/^(\+|-)?\d+(.\d+)?$/i;
returnre.test(s);
}
functioncheck_int(s){
varre=/^(\+|-)?\d+$/i;
returnre.test(s);
}
functioncheck_plus(s){
varre=/^[1-9]\d*$/i
returnre.test(s);
}
functioncheck_link(s){
varre=/^(http|mailto|ftp|https|telnet):\/{2}/i;
returnre.test(s);
}
functioncheck_password(s){
varre=/^\w+$/i;
returnre.test(s);
}
functioncheck_name(s){
returncheck_password(s);
}
functioncheck_date8(DateString){
returnisDateEight(DateString);
}
//日期检测
functioncheck_date(DateString){
if(DateString==null)returnfalse;
if(Dilimeter==''||Dilimeter==null)
varDilimeter='-';
if(Dilimeter.indexOf("/")>0)
{
Dilimeter="/";
}
vartempy='';
vartempm='';
vartempd='';
vartempH="";
vartempM="";
vartempS="";
vartempymd="";
vartemphms="";
vartempArray;
if(DateString.length<8&&DateString.length>19){
returnfalse;
}
if(DateString.indexOf("")>0)
{
temp=DateString.split("");
tempymd=temp[0];
temphms=temp[1];
}
else
{
tempymd=DateString;
temphms="00:00:00";
}
tempArray=tempymd.split(Dilimeter);
if(tempArray.length!=3){
returnfalse;
}
if(tempArray[0].length==4)
{
tempy=tempArray[0];
tempd=tempArray[2];
tempm=tempArray[1];
}
else
{
tempy=tempArray[2];
tempd=tempArray[1];
tempm=tempArray[0];
}
tempArray=temphms.split(":");
if(tempArray.length>3||tempArray.length<2){
returnfalse;
}
switch(tempArray.length){
case2:
tempH=tempArray[0];
tempM=tempArray[1];
tempS="00";
break;
case3:
tempH=tempArray[0];
tempM=tempArray[1];
tempS=tempArray[2];
break;
}
vartDateString=tempy+'/'+tempm+'/'+tempd+''+tempH+":"+tempM+":"+tempS;
vartempDate=newDate(tDateString);
if(isNaN(tempDate)){
returnfalse;
}
if((tempDate.getYear().toString()==tempy||tempDate.getYear()==parseInt(tempy,10)-1900)
&&(tempDate.getMonth()==parseInt(tempm,10)-1)
&&(tempDate.getDate()==parseInt(tempd,10))
&&(tempDate.getHours().toString()==parseInt(tempH,10))
&&(tempDate.getMinutes().toString()==parseInt(tempM,10))
&&(tempDate.getSeconds().toString()==parseInt(tempS,10)))
{
returntrue;
}
else
{
alert('tDateString='+tDateString);
returnfalse;
}
}
//激活输入组件的焦点
functionfocusIt(obj){
try{
varele=mtb;
}catch(e){
try{
obj.focus();
return;
}catch(e){
return;
}
}
for(vari=0;i<ele.length;i++){
swH(i);
try{
obj.focus();
}catch(e){
continue;
}
break;
}
try{
obj.focus();
}catch(e){
returnfalse;
}returntrue;
}