`
green_tea
  • 浏览: 4711 次
  • 性别: Icon_minigender_1
  • 来自: 北京务工人员
文章分类
社区版块
存档分类

自己写的一个类似html5表单属性的表单验证小框架基于jquery

 
阅读更多
/用户注册&登录 相关js函数    (基于jquery库)



/**
 * 验证表单元素   仅支持必填和 格式校验  密码匹配     
 * @param id    表单id
 * @param options    { errorElClass errorShowClass loop}
 * 实例:text <input name="username" type="text" id="username"  regValidityTxt="格式为10位数字" reg="^[0-9]{10}$"  errorLabel="usernameError" notBlank="notBlank" valueMissingTxt="不能为空">
 * textarea <textarea rows="1" cols="1" id="textarea" reg="^[a-z]{2,8}$" regValidityTxt="格式错误a-z" errorLabel="emailError" notBlank="notBlank" valueMissingTxt="不能为空">asdfadf</textarea>
 * 单选和多选 <input type="checkbox" name="agree" value="true" requiredCheck="requiredCheck" requiredCheckTxt="请阅读协议" 1errorLabel="checkError"/>
 *  <input name="repassword" type="password" id="repassword" notBlank="notBlank" valueMissingTxt="不能为空" errorLabel="confirmError" matchFor="password" matchForTxt="两次输入密码不一致"/>
 */
var validateForm = function(id,options){
    var errorCount = 0 ;
    var targetEnumIdValidity = true;
    var isTargetEnum = false;  //是否单个元素验证
    var $enum = $('form#'+id+' :input,textArea,select');    //需要校验的元素
    var errorElClass  = options.errorElClass?options.errorElClass:"error";       //验证失败样式
    var errorShowClass = options.errorShowClass?options.errorShowClass:"errorLabel";
    var targetEnumId = options.targetEnumId;
    var tipClass =   options.tipClass?options.tipClass:"tipClass";
    var showTip =  options.showTip;
    var loop =  options.loop;             //是否全部校验 (否 如果有一个校验失败则停止校验)
    $.each($enum,function(){
        var $e = $(this);
        if(targetEnumId){
            if(targetEnumId!=$e.attr('id'))
                isTargetEnum = true;
            else
                isTargetEnum =false;

        }
       if(!isTargetEnum){
        var reg = $e.attr('reg');             //需要添加元素属性reg  正则
        var matchFor = $e.attr('matchFor');             //匹配
        var matchForTxt = $e.attr('matchForTxt');             //匹配不成功 提示
        var regValidityTxt = $e.attr('regValidityTxt');      //匹配失败 提示(可为空)
        var notBlank =$e.attr('notBlank');                   // 必填
        var valueMissingTxt = $e.attr('valueMissingTxt');    // 为空提示
        var requiredCheck = $e.attr('requiredCheck');       //必选
        var requiredCheckTxt = $e.attr('requiredCheckTxt');   //未选提示
        var errorLabel = $e.attr('errorLabel');
        var $error = $('#'+errorLabel);
        var val = $e.val();
        var tip =  $e.attr('tip')? $e.attr('tip'): $e.attr('regValidityTxt');

        //元素获取焦点取消错误样式
        $e.focus(function(){
            $error.html('');
            $error.removeClass(errorShowClass);
            $e.removeClass(errorElClass);
            if(showTip){
               $error.addClass(tipClass);
            }  $error.html(tip);
        });

        if(requiredCheck){
            //用于判断是否勾选 阅读条款
            if($e.is("input:radio,input:checkbox")){
                 if(!$e.is(":checked")){
                   commonDo($e,$error,requiredCheckTxt,errorShowClass,errorElClass,showTip,tipClass);
                   if(!loop){
                       targetEnumIdValidity = false;
                       return;
                   }
                   errorCount++;
                 }
             }
        }
        //判断非空 必填字段
        if(notBlank){
            if (val == undefined || val == null || val == "null" || val.trim() == "" || val.trim().length == 0){
                   commonDo($e,$error,valueMissingTxt,errorShowClass,errorElClass,showTip,tipClass);
                   if(!loop){
                      targetEnumIdValidity = false;
                      return;
                   }
                   errorCount++;
            }
        }
        //判断正则
        if(reg){
            var $reg = new  RegExp(reg);
            if(!$reg.test(val)){
                commonDo($e,$error,regValidityTxt,errorShowClass,errorElClass,showTip,tipClass);
                if(!loop){
                    targetEnumIdValidity = false;
                    return;
                }
                errorCount++;
            }
        }
        //判断是否与目标表单值相等  主要用于密码确认
        if(matchFor){
             var $matchTarget = $('#'+matchFor);
             if($matchTarget && ($matchTarget.val() != val)){

              commonDo($e,$error,matchForTxt,errorShowClass,errorElClass,showTip,tipClass);
                if(!loop){
                    targetEnumIdValidity = false;
                    return;
                }
                errorCount++;
             }
        }
       }
    });
    // js return在each 循环中 为跳出循环
    if(loop)
       return !errorCount;
    else
        return targetEnumIdValidity;
}

/**
 * 表单验证 效果  qianxiaozhi
 * @param $e 
 * @param $error
 * @param text
 * @param errorShowClass
 * @param errorElClass
 */
function commonDo($e,$error,text,errorShowClass,errorElClass,showTip,tipClass){
     if($error){
               $error.html(text?text:'');
               $error.addClass(errorShowClass);
               if(showTip){
                   $error.removeClass(tipClass);
               }
            }
           if(errorElClass){
               $e.addClass(errorElClass);
           }
}
/**
 * 异步提交订单   
 * @param options
 */
var submitCallBack = function(options){
    var errorElClass  = options.errorElClass?options.errorElClass:"error";       //验证失败样式
    var errorShowClass = options.successShowClass?options.successShowClass:"errorLabel";
    var targetEnumId = options.targetEnumId? options.targetEnumId:"error";
    var error =    options.error;

    var $e = $("#"+targetEnumId);
    if($e){
        var errorLabel = $e.attr('errorLabel');
        var $error = $('#'+errorLabel);
        //填充错误信息
        commonDo($e,$error,error,errorShowClass,errorElClass);
    }
}

/**
 * 表单元素渲染  是否支持tip
 * @param id
 * @param option
 */
var formTipRender = function(id,tipClass){
      var $enum = $('form#'+id+' :input,textArea,select');    //需要校验的元素
      var $tipClass =   tipClass?tipClass:"tipClass";
     $.each($enum,function(){
         var $e = $(this);
         var tipShowLabel = $e.attr('tipShowLabel')?$e.attr('tipShowLabel'):$e.attr('errorLabel');
         var tip =  $e.attr('tip')? $e.attr('tip'): $e.attr('regValidityTxt');
         //元素获取焦点取消错误样式
        $e.focus(function(){
            if(tipShowLabel){
                var $tip = $('#'+tipShowLabel);
                if($tip){
                    $tip.removeClass();
                    $tip.addClass($tipClass);
                }   $tip.html(tip);
                }

        });

         $e.blur(function(){
            var $tip = $('#'+tipShowLabel);
            if(tipShowLabel && $tip.hasClass($tipClass)){
               $tip.html('');
            }
        });
     });
}



使用实例:
 <input name="username" type="text" id="username" value="$!stringEscapeUtils.escapeHtml($!username)" class="common-input" placeholder="请输入用户名" reg="^[(\u4e00-\u9fa5)a-zA-Z0-9_-]{2,20}$" regValidityTxt="用户名由英文、数字、汉字或“_”、“-”4-20位字符组成" errorLabel="usernameError" notBlank="notBlank" valueMissingTxt="用户名不能为空">
 <div id="usernameError" class="tipClass" ></div>

<input type="password" name="password" id="password" class="common-input"  placeholder="请输入密码" notBlank="notBlank" reg="^[a-zA-Z0-9_-]{6,16}$" regValidityTxt="密码由英文、数字或“_”、“-”6-16位字符组成" valueMissingTxt="密码不能为空" errorLabel="pwdError">
<div id="pwdError" class="tipClass"></div>
<input name="repassword" type="password" id="repassword" class="common-input" placeholder="请再次输入密码" notBlank="notBlank" tip="请再次输入密码" valueMissingTxt="密码不能为空" errorLabel="confirmError" matchFor="password" matchForTxt="两次输入密码不一致">
 <div id="confirmError" class="tipClass"></div>



页面引入js部分
 //绑定邮箱焦点离开事件
            $('#password').blur(function(){
                validateForm('frm_reg',{loop:false,targetEnumId:$(this).attr('id'),errorElClass:"error-common-input",errorShowClass:"red",
                showTip:true,tipClass:"tipClass"});
            });

             //绑定邮箱焦点离开事件
            $('#repassword').blur(function(){
                validateForm('frm_reg',{loop:false,targetEnumId:$(this).attr('id'),errorElClass:"error-common-input",errorShowClass:"red",
                showTip:true,tipClass:"tipClass"});
            });

//表单提交 验证所有元素是否符合要求
            $('#btnRegister').click(function(){
                //做一些简单规则验证 异步提交由后台判断其他情况
                var options ={loop:true,errorElClass:"error-common-input",errorShowClass:"red",showTip:true,tipClass:"tipClass"};
                if(validateForm('#frm_reg',options)){
                   $('#frm_reg').submit();
                }
            });

分享到:
评论
1 楼 lvxiaomao 2014-09-11  

相关推荐

    Java Web Jquery表单验证

    实现一个基于Jquery的表单验证插件。 1、初步运用了Jquery框架进行编程,基本掌握Jquery框架的使用。 2、熟练使用Jquery-validate表单验证插件,并熟知实现原理。 3、基本实现了一个基于Jquery的表单验证的调查问卷...

    基于jquery框架,采用jQuery formValidator表单验证插件。

    基于jquery框架,采用jQuery formValidator表单验证插件。

    基于jquery的表单验证框架

    jQuery是一个轻量级、高性能的JavaScript库,使得DOM操作变得简单易行,因此基于jQuery的表单验证框架应运而生,它简化了复杂的验证逻辑,让开发者可以快速高效地实现表单验证功能。 ### 1. jQuery基础 jQuery的...

    jQuery表单验证框架

    jQuery Validate 是一款广泛使用的JavaScript库,专门用于实现表单验证。这个框架极大地简化了在网页上创建复杂且功能强大的表单验证的过程。下面我们将详细探讨jQuery Validate框架的主要特性和使用方法。 首先,...

    表单验证jquery插件

    jQuery Validation Engine 是一个功能强大的表单验证插件,以其简单易用和丰富的自定义选项而受到开发者的青睐。 ## 1. jQuery Validation Engine 插件简介 jQuery Validation Engine 是一款基于 jQuery 库的验证...

    jquery表单验证框架:jquery.validate.zip

    《jQuery表单验证框架——深入理解jQuery.validate》 在网页开发中,表单验证是必不可少的一环,它能确保用户输入的数据符合预期,减少服务器端的处理负担,提高用户体验。jQuery是一个广泛使用的JavaScript库,而...

    jquery表单验证插件

    ### jQuery表单验证插件详解 #### 一、概述 jQuery表单验证插件是一种用于简化Web表单处理过程的强大工具。它不仅能够帮助开发者轻松地实现表单数据的Ajax提交,还支持文件上传等功能,极大地提升了用户体验并降低...

    很不错的验证框架jquery

    标题中的“很不错的验证框架jquery”指的是jQuery Validation Plugin,这是一个非常流行且功能强大的JavaScript库,专门用于HTML表单验证。jQuery本身是一个轻量级的JavaScript库,极大地简化了DOM操作、事件处理和...

    jquery 前端验证框架

    **jQuery前端验证框架详解** 在Web开发中,前端验证是必不可少的一个环节,它能有效防止无效数据提交到服务器,提高用户体验并减轻服务器负担。jQuery,作为一款广泛使用的JavaScript库,提供了许多工具和插件来...

    Jquery验证框架

    1. **demo.html**:这是一个演示页面,展示了如何在HTML表单中集成jQuery验证框架。它包含了必要的HTML结构、jQuery库、验证插件以及配置代码。 2. **ajax_post.php**:这个文件可能是一个简单的示例,用于处理通过...

    jQuery好的验证框架

    jQuery是一个广泛使用的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画和Ajax交互。在Web开发中,数据验证是必不可少的一环,用于确保用户输入的有效性和安全性。jQuery验证框架正是为此目的而设计的,...

    jquery中表单验证框架

    需要jQuery支持,使用时引入就好,教程的话可以看这个http://www.runoob.com/jquery/jquery-plugin-validate.html

    bootstrap风格的html5表单验证示例

    在这个“bootstrap风格的html5表单验证示例”中,我们将深入探讨如何结合这两者来创建高效且用户友好的表单。 1. **HTML5表单元素**:HTML5新增了多种表单元素,如`&lt;input type="email"&gt;`用于电子邮件输入,`...

    jQuery表单验证框架QuickValidation.zip

    Quick Validation 是一个 jQuery 的表单验证框架。你可以定制错误信息: errorRequired errorMaxlengtn errorMinlength errorNumber errorInteger errorRange errorEmail errorPhone errorExpression ...

    from 表单验证 js框架类库

    jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)...

    jQuery表单验证插件

    jQuery,一个轻量级、高性能的JavaScript库,提供了丰富的API来简化DOM操作,同时也有一系列优秀的插件用于增强表单验证功能。本篇文章将深入探讨jQuery表单验证插件的使用、功能以及常见的应用场景。 ### 一、...

    jquery.validate表单验证框架详解

    ### jQuery.validate 表单...jQuery.validate是一个基于jQuery的表单验证框架,它能够帮助开发者快速实现各种复杂的表单验证逻辑。使用此框架之前,需确保页面中已引入jQuery库和jQuery.validate插件。例如: ```html ...

    jquery表单注册验证框架.zip

    jQuery是由John Resig创建的一个JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。通过jQuery,开发者可以使用简洁的语法来实现复杂的网页交互。 二、jQuery表单选择器与事件 在jQuery中,我们...

    强大的表单验证框架

    在实际应用中,表单验证框架还可以与其他前端库(如jQuery、React、Vue等)无缝集成,或者与后端框架(如Spring、Django等)配合,实现前后端数据验证的一致性。 总的来说,"强大的表单验证框架"为开发者提供了强大...

    一个基于事件的jQuery插件用于HTML表单的客户端验证

    在实际项目中,结合其他jQuery插件和前端框架(如Bootstrap),可以构建出功能强大的、具有良好用户体验的表单验证系统。 总之,provejs-jquery插件提供了一种优雅的解决方案,用于HTML表单的客户端验证,利用事件...

Global site tag (gtag.js) - Google Analytics