zoukankan      html  css  js  c++  java
  • 通用客户端表单验证函数修正版

    转载:PHPSOHO
    通用客户端表单验证函数修正版

    主要内容:
    一、用法简介:
    二、类型定义:
    三、程序文件:

    历史:
    2005.2.25
    修改为通用客户端表单验证函数修正版
    2004.12.21   
    1.对整数的范围验证作了修改;
    2.对Email的验证作了修改,以适应在帐号中带点的情况;
    2004.12.20
    1.从网上收集到此片文章的原型;
    通用表单验证函数-再改进版




    最后修改 2004.12.21



    一、用法简介:
    表单验证函数放在了functions.js文件里了,在你所需要做验证的网页文件里,包含该脚本文件。一般语法为:
    <script type="text/javascript" src="./functions.js">
    对于焦点失去验证,为表单控件的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  最大值(数字)
    举例:
      <input type="text" name="test" valueType="int" objName="总载重吨" mustInput="true" maxInput="10000">

    2、浮点型(float)
    定义:
      valueType="float"
    属性:
      objName   对象名称(字符串)
      mustInput 必输项(true/false)
      minInput  最小值(数字)
      maxInput  最大值(数字)
      decimalLen小数位数(数字)
    举例:
      <input type="text" name="test" valueType="float" objName="运价" mustInput="true" maxInput="10000.50" decimalLen="2">

    3、字符串(string)
    定义:
      valueType="string"
    属性:
      objName   对象名称(字符串)
      mustInput 必输项(true/false)
      stringLen 字符串长度(数字)
    举例:
      <input type="text" name="test" valueType="string" objName="英文船名" mustInput="true" stringLen="100">

    4、日期(date)
    定义:
      valueType="date"
    属性:
      objName   对象名称(字符串)
      mustInput 必输项(true/false)
    举例:
      <input type="text" name="test" valueType="date" objName="开始日期" mustInput="true">
    备注:
      日期现在只能校验的格式为(yyyy-mm-dd)

    5、邮箱(email)
    定义:
      valueType="email"
    属性:
      objName   对象名称(字符串)
      mustInput 必输项(true/false)
    举例:
      <input type="text" name="test" valueType="email" objName="邮箱" mustInput="true">

    6、单选(radio)  暂没调试成功
    定义:
      valueType="radio"
    属性:
      objName   对象名称(字符串)
      mustSelect 必输项(true/false)
    举例:
      <input type="radio" name="test" valueType="radio" objName="租船方式" mustSelect="true">
    备注:
      对于同一组单选按钮,只需要定义第一个即可。

    7、复选(checkbox) 暂没调试成功
    定义:
      valueType="checkbox"
    属性:
      objName   对象名称(字符串)
      minSelect 最小选择数(数字)
      maxSelect 最大选择数(数字)
    举例:
      <input type="checkbox" name="test" valueType="checkbox" objName="爱好" minSelect="2" maxSelect="5">
    备注:
      对于同一组复选按钮,只需要定义第一个即可。

    8、下拉列表框(select)
    定义:
      valueType="select"
    属性:
      objName   对象名称(字符串)
      mustSelect 必输项(true/false)
    举例1:
      <select name="test" valueType="select" objName="租船方式" mustSelect="true">
    举例2:
    <select name="test" valueType="select" objName="租船方式" mustSelect="true">
    <option type="checkbox" name="test2" >请选择<option>
    <option type="checkbox" name="test2" >3 <option>
    <option type="checkbox" name="test2" >4 <option>
    </select>
    9、列表框(list)
    定义:
      valueType="list"
    属性:
      objName   对象名称(字符串)
      minSelect 最小选择数(数字)
      maxSelect 最大选择数(数字)
    举例:
      <select name="test" valueType="list" objName="爱好" size =5 minSelect="2" maxSelect="5">

    /*****************functions.js**********************/
    /***检查表单所有元素***/
    function checkForm(formName)
    {
        var oForm=document.all(formName);
      var eles = oForm.elements;
      //var els
      
        //遍历所有表元素
      for(var i=0;i<eles.length;i++)
        {
            //是否需要验证
            var sType=eles[i].valueType;
         
      if(sType)
            {
            
        if(eles[i].mustInput!=null && eles[i].mustInput=="true")
        { 
         //els=eles[i].value;
         //els=trim(els);
        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 validInt(ele)
    {
    if(!isInt(ele.value))
    {
      alert("请输入有效整数");
      ele.focus();
      return false;
    }
    else
    {
      if(ele.maxInput!=null && !isNaN(ele.maxInput))
       if(parseInt(ele.maxInput)<parseInt(ele.value))
       {
         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 isInt(s)
    {
    var patrn=/^0|^[1-9]d*/;
    if (!patrn.exec(s))
    {
        return false;
    }
    else
    {
      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)<parseInt(ele.value))
       {
         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 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 validEmail(ele)
    {
    if(!isEmail(ele.value))
    {
      alert("请输入有效邮箱");
      ele.focus();
      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;
    }
    /***验证单选按钮是否需要选择***/
    function validRadio(ele)
    {
    //var rads = document.getElementsByName(ele.name);
    
        eval("var rads="+name+"."+ele.name);
    var selectCount=0;
    for(var i=0;i<rads.length;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<chks.length;i++)
        {
      if(chks[i].checked)
            {
       selectCount++;
            }
        }
    if(ele.minSelect!=null && !isNaN(ele.minSelect))
    {
      if(selectCount<parseInt(ele.minSelect))
      {
       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<ele.options.length;i++)
        {
            if(ele.options[i].selected)
            {
                selectCount++;
            }
        }
    
    if(ele.minSelect!=null && !isNaN(ele.minSelect))
    {
      if(selectCount<parseInt(ele.minSelect))
      {
       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;
    }
    /***将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)<len)
    {
          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;
    }
    
  • 相关阅读:
    经典矩阵dp寻找递增最大长度
    有符号char转无符号short
    正则表达式学习之grep,sed和awk
    Git学习总结
    Linux下的压缩及归档
    bash脚本编程学习笔记(二)
    bash脚本编程学习笔记(一)
    Linux磁盘及文件系统(三)Linux文件系统
    Linux磁盘及文件系统(二)Linux下磁盘命名和分区
    Linux磁盘及文件系统(一)
  • 原文地址:https://www.cnblogs.com/freespider/p/1888705.html
Copyright © 2011-2022 走看看