在以前很多的web开发中,用到的表单验证也非常多,所以把以前写的整理了一下,列出了一个通用的表单验证脚本。以后的开发就可以不用再麻烦的去找了,带来了不少的方便。
    如果还有什么需要补充的地方,希望和大家讨论。 
 
      本站提供了下载。
/********************************************************
   auther   博爱老头
   date     2006-12-25
*********************************************************/
function checkLength(obj,minLen,maxLen,objName){
/********************************************************
   检查输入的值的长度是否合法。合法则返回true,非法返回false
   obj:     需要检验的参数
   minLen:  最小长度。若为-1,表示不限制最小长度
   maxLen:  最大长度。若为-1,表示不限制最大长度
   objName: 业务名称
*********************************************************/
  var objValue = trim(eval(obj).value);
  var len = objValue.length;
  if(maxLen!=-1){
    if(len>maxLen){
      alert(objName+”的长度不能大于”+maxLen);
      eval(obj).select();
      return false;
    }
  }
  
  if(minLen!=-1){
    if(len
      eval(obj).select();
      return false;
    }
  }
  
  return true;  
}
function trim(val){
/************************************
去掉一个字符串的前后空格,
返回去掉空格后的字符串
************************************/
    var v = val;
  
    //去掉前后空格
    while(v.length>0 && v.charAt(0)==” “){
       v = v.substring(1);
    }
    while(v.length>0 && v.charAt(v.length-1)==” “){
       v = v.substring(0,v.length-1);
    }
    return v;
}
function checkUsername(obj){
/************************************
检查用户名是否合法,合法则返回true,否则返回false
用户名只能由字母、数字、下划线、中划线组成,且只能以字母开头
*************************************/
  var username = eval(obj).value;
  username = trim(username);
  var ch;
  var len = username.length;
  
  if(len20){
    alert(“用户名的长度必须在4至20之间”);
    eval(obj).select();
    return false;
  }
  
  for(var i=0;i
    if((ch>='A' && ch='a' && ch='0' && ch      continue;
    }else{   //非法字符
      alert(“用户名只能由字母、数字、下划线组成”);
      eval(obj).select();
      return false;
    }
  }//end for i
  
  ch = username.charAt(0);
  if(!((ch>='A' && ch='a' && ch      alert(“用户名只能以字母开头”);
      eval(obj).select();
      return false;
  }
  return true;
}
function checkEmpty(obj,objName){
/************************************
为空,则表示检查不通过,返回false,不为空,返回true;
*************************************/
    var s=eval(obj).value; 
    s = trim(s);
   
   if(s.length==0){
     alert(objName+”不能为空,请输入!”);
     eval(obj).focus();
     return false;
   }
   
   return true;
}
function checkDataType(obj,objType,objName){
    /*/////////////////////////////////////////////////
    obj:         String,需要检验的参数
    objType:    int,参数值的正确类型 (1:字符串;2:整数;3:数值;4:日期(yyyy-mm-dd);5:邮件地址;)
    objName:     String,参数的业务名称
    *//////////////////////////////////////////////////
    
    var objValue = eval(obj).value;
    
    objValue = trim(objValue);
    
    switch (objType){
      case 2:
        //检查是否数字
        if (!isInt(objValue)){
          alert(“错误!” + objName + “必须为整数,请重新输入!”);
          eval(obj).select();
          return false;
        }
        break;
      case 3:
        //检查是否数值
        if (!isNumber(objValue)){
          alert(“错误!” + objName + “必须为数值,请重新输入!”);
          eval(obj).select();
          return false;
        }
        break;
      case 4:
        //检查是否为日期
        if (!isDate(objValue)){
          alert(“错误!” + objName + “必须为日期,且格式如'1977-11-09',请重新输入!”);
          eval(obj).select();
          return false;
        }
        break;
      case 5:
        //检查是否为邮件地址
        if(checkEmail(objValue)==false){
          alert(“错误!请在” + objName + “输入有效的邮件地址!”);
          eval(obj).select();
          return false;
        }
        
        break;
      case 8:
        //检查是否为日期时间格式
        if (isDateTime(objValue) == false){
          alert(“错误!” + objName + “必须为日期,且格式如'1977-11-09 21:23:45',请重新输入!”)
          eval(obj).select();
          return false;
        } else
          return true;
        break;
    }
  }
function isNumber(val){
/************************************
判断传入的变量是否为数字,是则返回true
*************************************/  
  //去掉前后空格
      var v = trim(val);      
      
      if(v.length==0){
        return false;
      }
      
      
      var num = parseFloat(v);
      if(isNaN(num)){
        return false;
      }else{
        return true;
      }
}
function isInt(val){
/************************************  
判断传入的变量是否为整数,是则返回true
************************************/
    //去掉前后空格
    var v = trim(val);
    
    
    if(v.length==0){
      return false;
    }
    
    for(var i=0;i
        return false;
      }
    }
        
    var num = parseInt(v);
    if(isNaN(num)){
      return false;
    }else{
        return true;
    }
}
function isDate(DateString){
/************************************
验证是否为日期类型,是则返回true
只有格式如同以下的字符串才是日期时间型:'2004-04-22'
************************************/
  var v = trim(DateString);
  
  if (v==null) return true;
  if (v == “”) return true;
  var Dilimeter;
  Dilimeter = '-';
  var tempy='';
  var tempm='';
  var tempd='';
  var tempArray;
  if (v.length10)
    return false;
  tempArray = v.split(Dilimeter);
  if (tempArray.length!=3)
    return false;
  if (tempArray[0].length==4)
  {
    tempy = tempArray[0];
    tempd = tempArray[2];
  }
  else
  {
    tempy = tempArray[2];
    tempd = tempArray[1];
  }
  tempm = tempArray[1];
  var tDateString = tempy + '/'+tempm + '/'+tempd+' 8:0:0';
  var tempDate = new Date(tDateString);
  if (isNaN(tempDate))
    return false;
  while (tempm.substring(0,1) == “0”)
      tempm = tempm.substring(1);
    while (tempd.substring(0,1) == “0”)
      tempd = tempd.substring(1);
  if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd)))
    return true;
  else
    return false;
}
function isDateTime(DateTimeString){
/************************************
验证是否为日期时间类型,是则返回true
只有格式如同以下的字符串才是日期时间型:'2004-04-22 15:53:27'
************************************/
    
    //去掉前后空格
      var v = trim(DateTimeString);
        if (v == null) return true;
        if (v == “”) return true;
        var timeStart = v.indexOf(” “);
        var DateString = v.substring(0,timeStart);
        if (DateString==null) return false;
        var Dilimeter;
        Dilimeter = '-';
        var tempy='';
        var tempm='';
        var tempd='';
        var tempArray;
        if (DateString.length10){
                return false;
                }
        tempArray = DateString.split(Dilimeter);
        if (tempArray.length!=3)
        {
                return false;
                }
        if (tempArray[0].length==4)
        {
                tempy = tempArray[0];
                tempd = tempArray[2];
        }
        else
        {
                tempy = tempArray[2];
                tempd = tempArray[1];
        }
        tempm = tempArray[1];
        var TimeString = v.substring(timeStart + 1);
        Dilimeter = ':';
        var temph='';
        var tempmi='';
        var temps='';
        var tempArray1;
        if (TimeString.length8){
                return false;
                }
        tempArray1 = TimeString.split(Dilimeter);
        if (tempArray1.length!=3){
                return false;
                }
        temph = tempArray1[0];
        tempmi = tempArray1[1];
        temps = tempArray1[2];
        var DateString = tempy + '/'+tempm + '/'+tempd+' ' + temph + ':' + tempmi + ':' + temps;
        var tempDate = new Date(DateString);
        if (isNaN(tempDate)){
                return false;
                }
        while (tempm.substring(0,1) == “0”)
                tempm = tempm.substring(1);
        while (tempd.substring(0,1) == “0”)
                tempd = tempd.substring(1);
        if (temph.substring(0,1) == “0”)
                temph = temph.substring(1);
        if (tempmi.substring(0,1) == “0”)
                tempmi = tempmi.substring(1);
        if (temps.substring(0,1) == “0”)
                temps = temps.substring(1);
        if (((tempDate.getUTCFullYear()).toString()==tempy) &&
                (tempDate.getMonth()==parseInt(tempm)-1) &&
                (tempDate.getDate()==parseInt(tempd)) &&
                (tempDate.getHours() == parseInt(temph)) &&
                (tempDate.getMinutes() == parseInt(tempmi)) &&
                (tempDate.getSeconds() == parseInt(temps))
                ){
                return true;
                }
        else{
          if ((tempm == “1”) && (tempd == “1”)){
                        if (((tempDate.getUTCFullYear()).toString()==parseInt(tempy)-1) &&
                                (tempDate.getMonth()==parseInt(tempm)-1) &&
                                (tempDate.getDate()==parseInt(tempd)) &&
                                (tempDate.getHours() == parseInt(temph)) &&
                                (tempDate.getMinutes() == parseInt(tempmi)) &&
                                (tempDate.getSeconds() == parseInt(temps))
                                ){
                                return true;
                        }
         }
           return false;
      }
}
function isEnglish(name) //英文值检测
{
/***********************************
如果name里的字符全部是ASCII码,返回true,否则返回false
************************************/
   if(name.length == 0)
    return false;
   for(i = 0; i     if(name.charCodeAt(i) > 128)
     return false;
   }
   return true;
}
     //检查是否IP地址
     function checkIfIP(ipstr){    
      if (ipstr.length == 0) {
           return false;
      }
    
      while(ipstr.length>0 && ipstr.charAt(0)==” “){
         ipstr = ipstr.substring(1);
      }
      while(ipstr.length>0 && ipstr.charAt(ipstr.length-1)==” “){
         ipstr = ipstr.substring(0,ipstr.length-1);
      }
          
      var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
      var IPArray = ipstr.match(ipDomainPat);
      if (IPArray != null) {
                       for (var i = 1; i                           if (IPArray > 255) {
                             return false;
                          }//if
                       }//for
                       return true;
       }//if
  }
  
  
//判断是否为EMAIL地址
function checkEmail(emailStr) {
               if (emailStr.length == 0) {
                   return true;
               }
               var emailPat=/^(.+)@(.+)$/;
               var specialChars=”\\(\\)@,;:\\\\\\\”\\.\\[\\]”;
               var validChars=”\[^\\s” + specialChars + “\]”;
               var quotedUser=”(\”[^\”]*\”)”;
               var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
               var atom=validChars + '+';
               var word=”(” + atom + “|” + quotedUser + “)”;
               var userPat=new RegExp(“^” + word + “(\\.” + word + “)*$”);
               var domainPat=new RegExp(“^” + atom + “(\\.” + atom + “)*$”);
               var matchArray=emailStr.match(emailPat);
               if (matchArray == null) {
                   return false;
               }
               var user=matchArray[1];
               var domain=matchArray[2];
               if (user.match(userPat) == null) {
                   return false;
               }
               var IPArray = domain.match(ipDomainPat);
               if (IPArray != null) {
                   for (var i = 1; i                       if (IPArray > 255) {
                         return false;
                      }
                   }
                   return true;
               }
               var domainArray=domain.match(domainPat);
               if (domainArray == null) {
                   return false;
               }
               var atomPat=new RegExp(atom,”g”);
               var domArr=domain.match(atomPat);
               var len=domArr.length;
               if ((domArr[domArr.length-1].length                    (domArr[domArr.length-1].length > 3)) {
                   return false;
               }
               if (len                    return false;
               }
               return true;
            }
//EMAIL的判断
function isemail(str){
  var flag=true;
  if((str.length ==0) ||(str==null)){
      flag=true;
  }else{
    var atindex =str.indexOf('@');
    var dotindex=str.indexOf('.',atindex);   
    thesub =str.substring(0,dotindex+1); 
    if((atindex       flag=false;
   }else{
     flag=true;
   }
  }
  return(flag);
}
  
[/java]
[file]attachment/200704/validate.txt[/file]
![[music] 守候](/wp-content/themes/textdash/img/thumb-medium.png) 
																								
var num = parseInt(v);
if(isNaN(num)){
return false;
}else{
return true;
}
这种写成 return !isNaN(parseInt(v)),简单也易懂
另外很多验证如果通过正则表达式来处理的,代码就会简洁的多
当然,我是用的规范的写法。