通用表单验证函数

导读:
  通用表单验证函数-再改进版
  主要内容:
  一、用法简介:
  二、类型定义:
  三、程序文件:
  历史:
  2004.12.21
  1.对整数的范围验证作了修改;
  2.对Email的验证作了修改,以适应在帐号中带点的情况;
  2004.12.20
  1.从网上收集到此片文章的原型;
  通用表单验证函数-再改进版
  
  
  最后修改 2004.12.21
  
  
  一、用法简介:
  表单验证函数放在了functions.js文件里了,在你所需要做验证的网页文件里,包含该脚本文件。一般语法为:
  <script type="text/javascript" src="./functions.js"></script>
  对于焦点失去验证,为表单控件的onBlur事件绑定相应的验证函数,用法如下:
  整型 checkNumber()
  浮点型 checkNumber()
  字符串 checkString()
  日期 checkDate()
  邮箱 checkEmail()
  示例 onBlur="checkNumber()"
  对于表单提交验证,在表单提交前进行判断,用法如下:
  if(checkForm('表单名称'))
  {
  表单名称.submit();
  return true;
  }
  else
  {
  return false;
  }
  也可以绑定表单onSubmit事件,用法如下:
  onSubmit="return checkForm('表单名称')"
  二、类型定义:
  1、整型(int)
  定义:
  valueType="int"
  属性:
  objName 对象名称(字符串)
  mustInput 必输项(true/false)
  minInput 最小值(数字)
  maxInput 最大值(数字)
  举例:
  
  2、浮点型(float)
  定义:
  valueType="float"
  属性:
  objName 对象名称(字符串)
  mustInput 必输项(true/false)
  minInput 最小值(数字)
  maxInput 最大值(数字)
  decimalLen小数位数(数字)
  举例:
  
  3、字符串(string)
  定义:
  valueType="string"
  属性:
  objName 对象名称(字符串)
  mustInput 必输项(true/false)
  stringLen 字符串长度(数字)
  举例:
  
  4、日期(date)
  定义:
  valueType="date"
  属性:
  objName 对象名称(字符串)
  mustInput 必输项(true/false)
  举例:
  
  备注:
  日期现在只能校验的格式为(yyyy-mm-dd)
  5、邮箱(email)
  定义:
  valueType="email"
  属性:
  objName 对象名称(字符串)
  mustInput 必输项(true/false)
  举例:
  
  6、单选(radio)
  定义:
  valueType="radio"
  属性:
  objName 对象名称(字符串)
  mustSelect 必输项(true/false)
  举例:
  
  备注:
  对于同一组单选按钮,只需要定义第一个即可。
  7、复选(checkbox)
  定义:
  valueType="checkbox"
  属性:
  objName 对象名称(字符串)
  minSelect 最小选择数(数字)
  maxSelect 最大选择数(数字)
  举例:
  
  备注:
  对于同一组复选按钮,只需要定义第一个即可。
  8、下拉列表框(select)
  定义:
  valueType="select"
  属性:
  objName 对象名称(字符串)
  mustSelect 必输项(true/false)
  举例:
  
  •   9、列表框(list)   定义:   valueType="list"   属性:   objName 对象名称(字符串)   minSelect 最小选择数(数字)   maxSelect 最大选择数(数字)   举例:   
      三、程序文件
      /*****************functions.js**********************/
      /***检查表单所有元素***/
      function checkForm(formName)
      {
      var oForm=document.all(formName);
      var eles = oForm.elements;
      //遍历所有表元素
      for(var i=0;i
      {
      //是否需要验证
      var sType=eles[i].valueType;
      if(sType)
      {
      if(eles[i].mustInput!=null && eles[i].mustInput=="true")
      {
      if(trim(eles[i].value)=="")
      {
      if(eles[i].objName!=null)
      {
      alert(eles[i].objName+"不可以为空");
      }
      else
      {
      alert("该文本框为必输字段");
      }
      eles[i].focus();
      event.returnValue=false;
      return false;
      }
      }
      switch(sType)
      {
      //整数
      case "int":
      if(!validInt(eles[i]))
      {
      event.returnValue=false;
      return false;
      }
      break;
      //小数
      case "float":
      if(!validFloat(eles[i]))
      {
      event.returnValue=false;
      return false;
      }
      break;
      //字符串
      case "string":
      if(!validString(eles[i]))
      {
      event.returnValue=false;
      return false;
      }
      break;
      //日期
      case "date":
      if(!validDate(eles[i]))
      {
      event.returnValue=false;
      return false;
      }
      break;
      //邮件
      case "email":
      if(!validEmail(eles[i]))
      {
      event.returnValue=false;
      return false;
      }
      break;
      //单选按钮
      case "radio":
      if(!validRadio(eles[i]))
      {
      event.returnValue=false;
      return false;
      }
      break;
      //复选按钮
      case "checkbox":
      if(!validBox(eles[i]))
      {
      event.returnValue=false;
      return false;
      }
      break;
      //下拉列表框
      case "select":
      if(!validSelect(eles[i]))
      {
      event.returnValue=false;
      return false;
      }
      break;
      //列表框
      case "list":
      if(!validList(eles[i]))
      {
      event.returnValue=false;
      return false;
      }
      break;
      }
      }
      }
      event.returnValue=true;
      return true;
      }
      /***检查是否为数字***/
      function checkNumber()
      {
      var ele=event.srcElement;
      if(ele.valueType!=null)
      {
      if(ele.mustInput!=null && ele.mustInput=="true")
      {
      if(trim(ele.value)=="")
      {
      if(ele.objName!=null)
      {
      alert(ele.objName+"不可以为空");
      }
      else
      {
      alert("该文本框为必输字段");
      }
      ele.focus();
      return false;
      }
      }
      if(ele.valueType=="int")
      checkInt(ele);
      else if(ele.valueType=="float")
      checkFloat(ele);
      else
      ;
      }
      return true;
      }
      /***检查是否为整数***/
      function checkInt(ele)
      {
      if(!isInt(ele.value))
      {
      alert("请输入有效整数");
      ele.focus();
      return false;
      }
      else
      {
      if(ele.maxInput!=null && !isNaN(ele.maxInput))
      if(parseInt(ele.maxInput)
      {
      alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该小于"+ele.maxInput);
      ele.focus();
      return false;
      }
      if(ele.minInput!=null && !isNaN(ele.minInput))
      if(parseInt(ele.minInput)>parseInt(ele.value))
      {
      alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该大于"+ele.minInput);
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***检查是否为小数***/
      function checkFloat(ele)
      {
      if(isNaN(ele.value))
      {
      alert("请输入有效数字");
      ele.focus();
      return false;
      }
      else
      {
      if(ele.decimalLen!=null && !checkDecimal(ele.value,ele.decimalLen))
      {
      alert("您输入的"+convertNullToSpace(ele.objName)+"值小数位最多为"+ele.decimalLen);
      ele.focus();
      return false;
      }
      if(ele.maxInput!=null && !isNaN(ele.maxInput))
      if(parseInt(ele.maxInput)
      {
      alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该小于等于"+ele.maxInput);
      ele.focus();
      return false;
      }
      if(ele.minInput!=null && !isNaN(ele.minInput))
      if(parseInt(ele.minInput)>parseInt(ele.value))
      {
      alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该大于等于"+ele.minInput);
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***检查是否为字符串***/
      function checkString()
      {
      var ele=event.srcElement;
      if(ele.valueType!=null)
      {
      if(ele.mustInput!=null && ele.mustInput=="true")
      {
      if(trim(ele.value)=="")
      {
      if(ele.objName!=null)
      {
      alert(ele.objName+"不可以为空");
      }
      else
      {
      alert("该文本框为必输字段");
      }
      ele.focus();
      return false;
      }
      }
      if(ele.stringLen!=null && !isNaN(ele.stringLen))
      {
      var value=new String(ele.value);
      if(value.length>parseInt(ele.stringLen))
      {
      alert("您输入的"+convertNullToSpace(ele.objName)+"最大长度为"+ele.stringLen);
      ele.focus();
      return false;
      }
      }
      }
      return true;
      }
      /***检查是否为日期格式***/
      function checkDate()
      {
      var ele=event.srcElement;
      if(ele.valueType!=null)
      {
      if(ele.mustInput!=null && ele.mustInput=="true")
      {
      if(trim(ele.value)=="")
      {
      if(ele.objName!=null)
      {
      alert(ele.objName+"不可以为空");
      }
      else
      {
      alert("该文本框为必输字段");
      }
      ele.focus();
      return false;
      }
      }
      if(!isDate(ele.value))
      {
      alert("请输入有效日期(yyyy-mm-dd)");
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***检查是否为电子邮箱***/
      function checkEmail()
      {
      var ele=event.srcElement;
      if(ele.valueType!=null)
      {
      if(ele.mustInput!=null && ele.mustInput=="true")
      {
      if(trim(ele.value)=="")
      {
      if(ele.objName!=null)
      {
      alert(ele.objName+"不可以为空");
      }
      else
      {
      alert("该文本框为必输字段");
      }
      ele.focus();
      return false;
      }
      }
      if(!isEmail(ele.value))
      {
      alert("请输入有效邮箱");
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***验证是否为整数***/
      function validInt(ele)
      {
      if(!isInt(ele.value))
      {
      alert("请输入有效整数");
      ele.focus();
      return false;
      }
      else
      {
      if(ele.maxInput!=null && !isNaN(ele.maxInput))
      if(parseInt(ele.maxInput)
      {
      alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该小于"+ele.maxInput);
      ele.focus();
      return false;
      }
      if(ele.minInput!=null && !isNaN(ele.minInput))
      if(parseInt(ele.minInput)>parseInt(ele.value))
      {
      alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该大于"+ele.minInput);
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***验证是否为小数***/
      function validFloat(ele)
      {
      if(isNaN(ele.value))
      {
      alert("请输入有效数字");
      ele.focus();
      return false;
      }
      else
      {
      if(ele.decimalLen!=null && !checkDecimal(ele.value,ele.decimalLen))
      {
      alert("您输入的"+convertNullToSpace(ele.objName)+"值小数位最多为"+ele.decimalLen);
      ele.focus();
      return false;
      }
      if(ele.maxInput!=null && !isNaN(ele.maxInput))
      if(parseInt(ele.maxInput)
      {
      alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该小于"+ele.maxInput);
      ele.focus();
      return false;
      }
      if(ele.minInput!=null && !isNaN(ele.minInput))
      if(parseInt(ele.minInput)>parseInt(ele.value))
      {
      alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该大于"+ele.minInput);
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***验证是否为字符串***/
      function validString(ele)
      {
      if(ele.stringLen!=null && !isNaN(ele.stringLen))
      {
      var value=new String(ele.value);
      if(value.length>parseInt(ele.stringLen))
      {
      alert("您输入的"+convertNullToSpace(ele.objName)+"最大长度为"+ele.stringLen);
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***验证是否为日期格式***/
      function validDate(ele)
      {
      if(!isDate(ele.value)&&ele.value!="")
      {
      alert("请输入有效日期(yyyy-mm-dd)");
      ele.focus();
      return false;
      }
      return true;
      }
      /***验证是否为电子邮箱***/
      function validEmail(ele)
      {
      if(!isEmail(ele.value))
      {
      alert("请输入有效邮箱");
      ele.focus();
      return false;
      }
      return true;
      }
      /***验证单选按钮是否需要选择***/
      function validRadio(ele)
      {
      //var rads = document.getElementsByName(ele.name);
      eval("var rads="+name+"."+ele.name);
      var selectCount=0;
      for(var i=0;i
      {
      if(rads[i].checked)
      {
      selectCount++;
      }
      }
      
      if(ele.mustSelect!=null && ele.mustSelect)
      {
      if(selectCount==0)
      {
      alert("请选择"+convertNullToSpace(ele.objName));
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***验证复选按钮是否需要选择***/
      function validBox(ele)
      {
      //var rads = document.getElementsByName(ele.name);
      eval("var chks="+name+"."+ele.name);
      var selectCount=0;
      for(var i=0;i
      {
      if(chks[i].checked)
      {
      selectCount++;
      }
      }
      if(ele.minSelect!=null && !isNaN(ele.minSelect))
      {
      if(selectCount
      {
      alert(convertNullToSpace(ele.objName)+"至少选择"+ele.minSelect+"项");
      ele.focus();
      return false;
      }
      }
      if(ele.maxSelect!=null && !isNaN(ele.maxSelect))
      {
      if(selectCount>parseInt(ele.maxSelect))
      {
      alert(convertNullToSpace(ele.objName)+"至多选择"+ele.maxSelect+"项");
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***验证下拉列表框是否需要选择***/
      function validSelect(ele)
      {
      //var rads = document.getElementsByName(ele.name);
      if(ele.mustSelect!=null && ele.mustSelect)
      {
      if(ele.selectedIndex==0)
      {
      alert("请选择"+convertNullToSpace(ele.objName));
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***验证列表框的选择项数***/
      function validList(ele)
      {
      //var rads = document.getElementsByName(ele.name);
      var selectCount=0;
      for(var i=0;i
      {
      if(ele.options[i].selected)
      {
      selectCount++;
      }
      }
      alert(selectCount);
      if(ele.minSelect!=null && !isNaN(ele.minSelect))
      {
      if(selectCount
      {
      alert(convertNullToSpace(ele.objName)+"至少选择"+ele.minSelect+"项");
      ele.focus();
      return false;
      }
      }
      if(ele.maxSelect!=null && !isNaN(ele.maxSelect))
      {
      if(selectCount>parseInt(ele.maxSelect))
      {
      alert(convertNullToSpace(ele.objName)+"至多选择"+ele.maxSelect+"项");
      ele.focus();
      return false;
      }
      }
      return true;
      }
      /***判断是否为整数***/
      function isInt(s)
      {
      var patrn=/^[-,+]{0,1}[0-9]{0,}$/;
      if (!patrn.exec(s))
      return false;
      return true;
      }
      /***判断是否为数字***/
      function isNumber(s)
      {
      var patrn=/^[-,+]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}$/;
      if (!patrn.exec(s))
      return false;
      return true;
      }
      /***判断是否为日期***/
      function isDate(str)
      {
      var r = str.match(/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/);
      if(r==null)
      {
      return false;
      }
      var d= new Date(r[1], r[3]-1, r[4]);
      if(!(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]))
      {
      return false;
      }
      return true;
      }
      /***判断是否为邮箱***/
      function isEmail(str)
      {
      if(str.match(/[/w-.]+@{1}[/w-]+/.{1}/w{2,4}(/.{0,1}/w{2}){0,1}/ig)!=str)
      return false;
      else
      return true;
      }
      /***将NULL转化为空格,用于显示对象名称***/
      function convertNullToSpace(paramValue)
      {
      if(paramValue==null)
      return "";
      else
      return paramValue;
      }
      /***检查小数位数***/
      function checkDecimal(num,decimalLen)
      {
      var len = decimalLen*1+1;
      if(num.indexOf('.')>0)
      {
      num=num.substr(num.indexOf('.')+1,num.length-1);
      if ((num.length)
      {
      return true;
      }
      else
      {
      return false;
      }
      }
      return true;
      }
      /***去除空格***/
      function trim(str)
      {
      if (str.length > 0)
      {
      while ((str.substring(0,1) == " ") && (str.length > 0))
      {
      str = str.substring(1,str.length);
      }
      while (str.substring(str.length-1,str.length) == " ")
      {
      str = str.substring(0,str.length-1);
      }
      }
      return str;
      }
      

    本文转自
    http://www.afuer.com/article.asp?id=170
    • 0
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值