`
yingruochen
  • 浏览: 75238 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JS控件:表单验证

 
阅读更多

下面的文章是复制http://godist.blog.sohu.com/26936043.html上的,留着以后会用到的

/*
 * 对页面表单进行验证的函数
 * 输入:form对象
 * 输出:true:验证通过;false:验证失败
 * 使用方法:
 * 1、在需要调用的页面中包含validateForm.js  如:<SCRIPT language="JavaScript" SRC="../../../js/common/validateForm.js"></SCRIPT>
 * 2、在需要进行校验的输入框中添加 validator="验证类型" cnname="输入框名称" maxlength="长度"
 *    例如:<input name="FAVOURABLE_FEE" type="text" size="16" validator="float10_2Null" cnname="优惠费用" maxlength="13">
 *    目前支持的类型如下:
 *        1.非空的日期型数据
 *        2.可以空的日期型数据
 *        3.非空的数字类型
 *        4.可以为空的数字类型
 *        5.非空的实数型
 *        6.可以为空的实数型
 *        7.非空的最大10位整数,2位小数的实数型
 *        8.可以为空的最大10位整数,2位小数的实数型
 *        9.非空的整型
 *        10.可以为空的整型
 *        11、非空字符串
 *        12、可以为空字符串
 *        13、非空合法的字符串:除去($*&'=<#>%^@~ )
 *        14、可以为空的合法字符串:除去($*&'=<#>%^@~ )
 *        15、不可以为空的Email
 *        16、可以为空的Email
 * 3、在提交数据的地方添加调用 validateForm(form对象) 如:validateForm(form1)
*/

function validateForm(theForm)
      {   //对页面表单进行验证的函数
  
  //定义正则表达式
  var PatternsDict=new Object();
  //1.非空的日期型数据
  PatternsDict.date = /^[1-2]\d{3}-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[0-1])$/;
  //2.可以空的日期型数据
  PatternsDict.dateNull = /(^[1-2]\d{3}-(0?[1-9]|1[0-2]|3[0-1])-(0?[1-9]|[12][0-9]|3[0-1])$)|(^[1-2]\d{3}-([1-9]|1[0-2]|3[0-1])-([1-9]|[12][0-9]|3[0-1])$)|(^$)/;
  //3.非空的数字类型
  PatternsDict.num= /^\d+$/;
  //4.可以为空的数字类型
  PatternsDict.numNull = /^\d*$/;
  //5.非空的实数型
  PatternsDict.float= /^(0|\-?[1-9]+[0-9]*|\-?[1-9]+[0-9]*\.\d+|\-?[0-9]*\.\d+)$/;
  //6.可以为空的实数型
  PatternsDict.floatNull = /(^(0|\-?[1-9]+[0-9]*|\-?[1-9]+[0-9]*\.\d+|\-?[0-9]*\.\d+)$)|(^$)/;
  //7.非空的最大10位整数,2位小数的实数型
  PatternsDict.float10_2= /^(0|\-?[1-9]{1}\d{0,9}|\-?[1-9]{1}\d{0,9}\.\d{1,2}|\-?\d{0,9}\.\d{1,2})$/;
  //8.可以为空的最大10位整数,2位小数的实数型
  PatternsDict.float10_2Null = /(^(0|\-?[1-9]{1}\d{0,9}|\-?[1-9]{1}\d{0,9}\.\d{1,2}|\-?\d{0,9}\.\d{1,2})$)|(^$)/;
  //9.非空的整型
  PatternsDict.int= /^(0|\-?[1-9]{1}\d*)$/;
  //10.可以为空的整型
  PatternsDict.intNull = /(^(0|\-?[1-9]{1}\d*)$)|(^$)/;
  //11、非空字符串
  PatternsDict.string = /^[\S\s]+$/;
  //12、可以为空字符串
  PatternsDict.stringNull = /^[\S\s]*$/;
  //13、非空合法的字符串:除去($*&'=<#>%^@~ )
  PatternsDict.stringLegal = /^[^\$\*&'=<#>%\^@~\s]+$/;
  //14、可以为空的合法字符串:除去($*&'=<#>%^@~ )
  PatternsDict.stringLegalNull = /(^[^\$\*&'=<#>%\^@~\s]+$)|(^$)/;
  //15、不可以为空的Email
  PatternsDict.email = /^[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+@[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+(\.[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+)+$/;
  //16、可以为空的Email
  PatternsDict.emailNull = /(^[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+@[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+(\.[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+)+$)|(^$)/;
  
  
        var elArr = theForm.elements; //elArr数组获得全部表单元素
        var val;
        var vname = "";
        for(var i = 0; i < elArr.length; i++)
        with(elArr[i])
        {               //循环表单中每一个元素
          var v = elArr[i].validator; //获取validator属性值
          var cnname=elArr[i].cnname; //获取cnname属性值
      var maxlength=elArr[i].maxlength; //获得长度
          if(!v) continue; //如没有validator属性值,则跳出本次循环
          if(!cnname) continue;
          var thePat = PatternsDict[v]; //选择对应的正则表达式
          var gotIt = thePat.exec(value); //运行对比
          if(!gotIt) //如果符合相应的正则表达式(为true),则转为false,否则执行该if块。
          {
              if (v=="date") vname="日期(例如:2005-01-02)";
              if (v=="dateNull") vname="日期(例如:2005-01-02),可以留空不填";
              if (v=="num") vname="非空的数字类型值";
       if (v=="numNull") vname="数字类型值";
              if (v=="float") vname="非空的实数";
       if (v=="floatNull") vname="实数";
              if (v=="float10_2") vname="非空的最大10位整数,2位小数的实数型";
       if (v=="float10_2Null") vname="最大10位整数,2位小数的实数型";
              if (v=="int") vname="非空的整型数值";
       if (v=="intNull") vname="整型数值";
              if (v=="email") vname="非空的Eamil";
       if (v=="emailNull") vname="Eamil";
       if (v=="string") vname="非空";
       if (v=="stringLegal") vname="非空合法的字符串。除『$*&'=<#>%^@~ 』";
       if (v=="stringLegalNull") vname="合法的字符串。除『$*&'=<#>%^@~ 』";
          }
      else {
           if(maxlength){
            //这里主要针对textarea类型没有maxlength属性而设置的
            val=value;
            if (val.length>maxlength) {
             vname="长度小于【 "+maxlength+" 】的字符串";
            }
           }
      }
      if (vname != ""){
           //有错误,阻止提交
           try
       {
               elArr[i].focus(); //此元素获得焦点
        if (elArr[i].type=="text" ) elArr[i].select();
       } catch(e) {}
      
              alert("按要求必须输入 “" + cnname + "”的数据!\n数据必须为:" + vname );
              return false; //阻止提交
      }
        }
        return true;
}

//===============================================================================================

function validateInput(theInput)
      {   //对页面表单进行验证的函数
  
  //定义正则表达式
  var PatternsDict=new Object();
  //1.非空的日期型数据
  PatternsDict.date = /^[1-2]\d{3}-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[0-1])$/;
  //2.可以空的日期型数据
  PatternsDict.dateNull = /(^[1-2]\d{3}-(0?[1-9]|1[0-2]|3[0-1])-(0?[1-9]|[12][0-9]|3[0-1])$)|(^[1-2]\d{3}-([1-9]|1[0-2]|3[0-1])-([1-9]|[12][0-9]|3[0-1])$)|(^$)/;
  //3.非空的数字类型
  PatternsDict.num= /^\d+$/;
  //4.可以为空的数字类型
  PatternsDict.numNull = /^\d*$/;
  //5.非空的实数型
  PatternsDict.float= /^(0|\-?[1-9]+[0-9]*|\-?[1-9]+[0-9]*\.\d+|\-?[0-9]*\.\d+)$/;
  //6.可以为空的实数型
  PatternsDict.floatNull = /(^(0|\-?[1-9]+[0-9]*|\-?[1-9]+[0-9]*\.\d+|\-?[0-9]*\.\d+)$)|(^$)/;
  //7.非空的最大10位整数,2位小数的实数型
  PatternsDict.float10_2= /^(0|\-?[1-9]{1}\d{0,9}|\-?[1-9]{1}\d{0,9}\.\d{1,2}|\-?\d{0,9}\.\d{1,2})$/;
  //8.可以为空的最大10位整数,2位小数的实数型
  PatternsDict.float10_2Null = /(^(0|\-?[1-9]{1}\d{0,9}|\-?[1-9]{1}\d{0,9}\.\d{1,2}|\-?\d{0,9}\.\d{1,2})$)|(^$)/;
  //9.非空的整型
  PatternsDict.int= /^(0|\-?[1-9]{1}\d*)$/;
  //10.可以为空的整型
  PatternsDict.intNull = /(^(0|\-?[1-9]{1}\d*)$)|(^$)/;
  //11、非空字符串
  PatternsDict.string = /^[\S\s]+$/;
  //12、可以为空字符串
  PatternsDict.stringNull = /^[\S\s]*$/;
  //13、非空合法的字符串:除去($*&'=<#>%^@~ )
  PatternsDict.stringLegal = /^[^\$\*&'=<#>%\^@~\s]+$/;
  //14、可以为空的合法字符串:除去($*&'=<#>%^@~ )
  PatternsDict.stringLegalNull = /(^[^\$\*&'=<#>%\^@~\s]+$)|(^$)/;
  //15、不可以为空的Email
  PatternsDict.email = /^[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+@[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+(\.[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+)+$/;
  //16、可以为空的Email
  PatternsDict.emailNull = /(^[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+@[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+(\.[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+)+$)|(^$)/;
  
  
  
        var elArr = theInput; //elArr数组获得输入框元素
        var val;
        var vname;
  if (elArr!=null)
        {               //循环表单中每一个元素
          var v = elArr.validator; //获取validator属性值
          var cnname=elArr.cnname; //获取cnname属性值
          if(!v) return true; //如没有validator属性值,则跳出本次循环
          if(!cnname) return true;
          var thePat = PatternsDict[v]; //选择对应的正则表达式
          var gotIt = thePat.exec(elArr.value); //运行对比
   //alert(elArr.value);
          if(!gotIt) //如果符合相应的正则表达式(为true),则转为false,否则执行该if块。
          {
              if (v=="date") vname="日期(例如:2005-01-02)";
              if (v=="dateNull") vname="日期(例如:2005-01-02),可以留空不填";
              if (v=="num") vname="非空的数字类型值";
       if (v=="numNull") vname="数字类型值";
              if (v=="float") vname="非空的实数";
       if (v=="floatNull") vname="实数";
              if (v=="float10_2") vname="非空的最大10位整数,2位小数的实数型";
       if (v=="float10_2Null") vname="最大10位整数,2位小数的实数型";
              if (v=="int") vname="非空的整型数值";
       if (v=="intNull") vname="整型数值";
              if (v=="email") vname="非空的Eamil";
       if (v=="emailNull") vname="Eamil";
       if (v=="string") vname="非空";
       if (v=="stringLegal") vname="非空合法的字符串。除『$*&'=<#>%^@~ 』";
       if (v=="stringLegalNull") vname="合法的字符串。除『$*&'=<#>%^@~ 』";
      
              elArr.focus(); //此元素获得焦点
       if (elArr.type=="text" ) elArr.select();
              alert("按要求必须输入 “" + cnname + "”的数据!\n数据必须为:" + vname );
              return false; //阻止提交
          }
        }
        return true;
}

分享到:
评论

相关推荐

    Javascript表单验证控件(Validator v1.05)

    - **表单验证**:是指在用户提交表单前,通过JavaScript检查输入数据的过程,以防止无效或错误的信息被发送到服务器。 - **验证规则**:是定义在特定字段上的条件,例如“非空”,“邮箱格式”,“数字范围”等,...

    js几种常用表单验证控件

    这篇文档将深入探讨JavaScript中几种常用的表单验证控件和方法。 一、基本的HTML5验证 HTML5引入了内置的表单验证属性,如`required`、`pattern`、`min`、`max`等,使得验证变得更加简单。例如: ```html ``` ...

    JS表单验证与JS常见问题解决方案

    JavaScript,作为一种广泛应用于Web开发的脚本语言,其在处理用户交互、特别是表单验证方面起着至关重要的作用。在创建动态和响应式的网页时,JS表单验证是确保数据质量和用户输入有效性的关键环节。以下是一些关于...

    WEB表单验证控件for vs2008

    本资源提供的是针对VS2008的WEB表单验证控件,这是一组用于增强用户输入验证功能的组件,能够帮助开发者确保用户在Web表单中提交的数据符合预设的规则和格式,从而提高数据的准确性和安全性。 Web表单验证是Web应用...

    bootstarp表单验证

    Bootstrap表单验证是一种在网页开发中确保用户输入数据有效性的技术。Bootstrap,作为最流行的前端框架之一,提供了优雅的样式和组件,使开发者能够轻松创建响应式和美观的界面。结合jQuery,我们可以实现动态和交互...

    Web控件和验证控件Web控件和验证控件

    - **验证组**:通过GroupName属性将多个验证控件关联,只有当一组控件都验证成功时,才提交表单。 在ASP.NET中,通常会结合使用Web控件和验证控件,构建出功能完备且健壮的Web应用。例如,使用TextBox控件获取用户...

    Form表单验证(服务器控件、HTML控件)

    本篇文章将详细讲解如何在Asp.net环境下进行Form表单验证,包括服务器控件和HTML控件的验证,并且重点讨论采用JavaScript实现的方式。 一、服务器控件验证 1. RequiredFieldValidator:这是最基本的验证控件,用于...

    js表单验证,js日期控件,js新闻编辑器控件,

    本话题主要探讨了三个关键知识点:JavaScript表单验证、JavaScript日期控件以及JavaScript新闻编辑器控件。 首先,JavaScript表单验证是确保用户输入数据正确性和完整性的关键步骤。在Web应用中,用户输入的数据...

    Javascript表单验证控件Validator v1.05

    JavaScript表单验证控件Validator v1.05是一款用于网页前端数据验证的工具,它能够帮助开发者在用户提交表单前检查输入的数据是否符合预设的规则,从而提高用户体验并减少服务器端的压力。该控件通常包含一系列的...

    验证控件:正则表达式大全

    通过“正则表达式大全.doc”文档,你可以找到更多实际场景下的正则表达式示例和解释,从而更好地掌握这一强大工具,并在表单验证和数据处理等方面提高效率。不断学习和实践,你将在正则表达式的世界中游刃有余。

    表单验证控件commons-validator-1.3.1

    表单验证控件commons-validator-1.3.1表单验证控件commons-validator-1.3.1表单验证控件commons-validator-1.3.1表单验证控件commons-validator-1.3.1表单验证控件commons-validator-1.3.1表单验证控件commons-...

    控件大全一webjs控件 WINFORM控件

    WebJS控件,也称为JavaScript控件或Web前端控件,主要用于构建动态、交互式的Web页面。这些控件是用JavaScript语言编写的,可以在用户的浏览器上运行,无需服务器端支持。WebJS控件的优势在于它们可以提供丰富的用户...

    简单的验证控件,利用控件来进行验证非空等

    你可以根据业务需求编写JavaScript函数(对于客户端验证)和C#或VB.NET方法(对于服务器端验证)。 除了这些验证方式,还有一些其他的验证控件,如RangeValidator(用于检查数值或日期范围)、RegularExpression...

    js表单验证(简单)

    本教程将聚焦于JavaScript的简单表单验证方法。 一、表单验证的重要性 表单验证可以预防无效数据的提交,减少服务器的负担,提升用户体验。例如,要求用户必须填写电子邮件地址,确保格式正确;或者要求密码强度,...

    WEB表单验证控件一体化验证_net_porch7qi_

    1. 集成验证:将多种验证逻辑封装在单一控件中,简化开发流程。 2. 自定义错误消息:允许开发者根据业务需求定制错误提示信息。 3. 客户端和服务器端验证同步:确保即使客户端验证被禁用,也能在服务器端进行数据...

    自定义验证控件 JS+.net

    在IT行业中,自定义验证控件是Web开发中不可或缺的一部分,尤其是在使用JavaScript(JS)和.NET框架时。本文将深入探讨如何使用这两种技术创建自定义验证控件,并提供相关知识点。 首先,JavaScript作为客户端脚本...

    表单验证控件cycForm

    cycForm是一个专注于表单验证的JavaScript控件,尤其适用于快速实现非空判断。通过扩展其功能,开发者可以构建出更全面、更强大的表单验证系统,以满足不同项目的具体需求。对于任何使用表单收集数据的网站或应用,...

    Javascript 表单验证对象控件 + ajax简单验证重复项与ajax提交数据

    在"Javascript 表单验证对象控件 + ajax简单验证重复项与ajax提交数据"这个主题中,我们将深入探讨如何利用JavaScript提高用户体验,通过实时验证用户输入的数据,以及如何使用Ajax技术异步验证和提交数据,避免页面...

    JS控件,JAVASCRIPT控件,实用控件!

    1. **表单验证**:在注册、登录等页面,通过JavaScript控件进行实时的表单验证,提高用户体验,减轻服务器压力。 2. **数据展示**:在数据分析、统计报告等场景,使用图表控件将数据以直观的方式展现。 3. **交互...

Global site tag (gtag.js) - Google Analytics