`
kong0itey
  • 浏览: 303044 次
社区版块
存档分类
最新评论

jQuery validate 分组验证(转)

阅读更多

首先声明一下,这个标题是不准确的,不准确的原因是,查了很多资料也没发现validate验证框架是支持分组验证,当然也看了部分他的源码,如果哪位知道它支持分组验证功能,请不吝赐教。

      分组验证的应用场景是这样的:一张表单中有多于一个的提交按钮,也就是说不只一个提交按钮,例如,点“按钮1”我可以验证文“本框1”、“文本框2”是否 符合验证规则,点击“按钮2”我可能去验证这张表单其它元素是否符合验证规则,公司同事原来找了一个可以分组验证的东东,只要在表单元素上加一个额外的 “GroupName='Info'”当然=后面你可填任何的字符,这样多个具有相同"GroupName"的表单元素就分到了一组,从而实现分组验证的 功能。暂切不讨论分组验证到底有没必要,或者分组验证在某些应用场景下是必须的(我实在想不起来在什么情景下是必须的)。今天项目组的人给我提出了分组验 证的问题,表面上是分组验证,但实际中的问题却是:当点击一些不是向后台提交数据的按钮时,总是触发jQuery验证框架的验证。可能是用过分组验证的缘 故,他想到用分组验证,说白了就是点击没有验证必要的按钮时,给它分到一个空组里面,什么都不验证,当时我就蒙了,虽然这样有点绕,不过能解决问题也可以 一试。大家应该都知道,Web Form项目下的任意一个服务端按钮,生成客户端代码都会是type=submit的按钮,也就是说,只要点击服务端的按钮都会POST给服务器,想想这 也挺变态啊。这里只要解决点击某个铵钮不触发jQuery验证框架验证就可以,还好,jQuery验证框架提供一个机制,就是设置服务器端按钮的 cssclass="cancel"就可以了(客户端设置class="cancel")

<asp:Button ID="Button1" cssclass="cancel" runat="server" Text="非提交按钮">

这样这个按钮就不会触发jq的验证了。

      以下是我在解决问题过程中发现的jQuery validate验证框架的一些特性,希望对您有所帮助。(如果您对此很了解,可略过以下内容)

      1、required非空验证只有在第一次提交后才会被激活生效,对于设置了非空验证的表单元素,初始页面后不会有任何提示,只有点击提交按钮时才会去击活并验证,如日期,整数等其它验证则在失去焦点后激活。

   2、$.validator.setDefaults()设置的参数,在$("#Form").validate()为某个表单注册验证之前才会有效,放在之后无效。

   3、对于用$("#元素ID").rules("add", { required: true });增加的验证规则可以用

$("#元素ID").rules("remove", "required");移除,但是注册到元素中的则不行,例如:

<asp:TextBox id="TxtAge" CssClass="{required:true}" ……/> TxtAge的验证规则无法移除。




 

       但还是发现有用价值!Jquery.validate提供了方法删除特定验证。这就好办。我们采用目标按扭使FORM绑定验证,然后再在不相关的SUBMIT绑定一个移除验证方法就行。相关代码如下:     


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/loveyou128144/archive/2009/09/23/4585687.aspx

 

 痛了。原因是从控件面板上拖动的按扭,最终在页面上全部转换成了submit。而大多情况下每个Submit的业务规则不同。所以特别需要 Jquery.validate能够以特定的submit为目标进行验证绑定。但“不幸”的是,我今天鄱遍了官方API都没有找到相关的直接支持

 

 

 

 

 

<% @ Page Language = " C# " AutoEventWireup = " true " CodeBehind = " Decompress.aspx.cs " Inherits = " QsqManage.Decompress " %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
    
< title > 演示 </ title >
    
< script language ="JavaScript" src ="/jslib/jquery-1.3.2.min.js" type ="text/javascript" ></ script >   
< script language ="JavaScript" src ="/jslib/jPlug/jquery.validate.min.js" type ="text/javascript" ></ script >

< script type ="text/javascript" >
      
        
// 绑定表单验证

         function NeedValidate()
         {
             $(
" #aspnetForm "
).validate({
                 rules: {
                     txtAge: {
                         required:
true
,
                         number:
true
,
                         min:
18

                     }
                 },
                 messages:{
                     txtAge: {
                         required:
" 必须填写 " ,
                         number:
" 请输入数字 "
,
                         min:jQuery.format(
" 必须年满{0}. "
)
                     }
                 }
             });
         }
        
// 取消表单验证

         function NoValidate()
         {
             $(
" #txtAge " ).rules( " remove " ); // 如果有多个 依次取消            

         }
        
         $(
function
() {
            
// 给需要验证的控件为表单绑定验证

             $( " #Button1 " ).click( function (){            
                 NeedValidate();
             });
            
            
// 不需要验证的控件 取消验证绑定

             $( " #Button2 " ).click( function () {
                 NoValidate();
             });
         });
</ script >

</ head >
< body >
    
< form id ="aspnetForm" runat ="server" >
    
< div >
    
     年龄:
< asp:TextBox ID ="txtAge" runat ="server" ></ asp:TextBox >
        
        
< asp:Button ID ="Button1" runat ="server" onclick ="Button1_Click" Text ="需要验证" />         
        
< asp:Button ID ="Button2" runat ="server" onclick ="Button2_Click" Text ="无须验证" />

    
    
</ div >
    
    
</ form >
</ body >
</ html >

后台很简单,

         protected void Button1_Click( object sender, EventArgs e)
         {
             Response.Write(
" 验证通过 "
);
         }

        
protected void Button2_Click( object
sender, EventArgs e)
         {
             Response.Write(
" 没有经过验证 "
);
         }

这样,点击Button1就会进行验证,而Button2则直接跳过。

如果一个页面有很多其它按扭,可以使用JQUERY强大的选择器进行批量取消验证功能。如下:

$(document).ready( function () {
    
// 给需要验证的控件为表单绑定验证

     $( " #Button1 " ).click( function () {
         NeedValidate();
     });

    
// 不需要验证的控件 取消验证绑定

     //              $("#Button2").click(function() {
     //                  NoValidate();
     //              });
    
    
// 批量取消绑定验证 对所有 type=submit 并且 name不为Button1的按扭取消表单验证

     $( " input[type='submit'][name!='Button1'] " ).click( function () {
         NoValidate();
     });
});

贴个简单的例子:

$('#EditView'

).validate({
                            event: "keyup"

,
                            rules:{
                                name:{required:true

},
            cosa_commodity_group_list:{required:true

}
            },
                            submitHandler:function

(){
                                $("#group_list > option"

).attr("selected"

,"selected"

);
                                $(this

).submit();
                            }
            });

1.event 是触发校验的方式,可选值有keyup(每次按键时),blur(当控件失去焦点时),不使用这个参数时就只在按提交按钮时触发

2.如果在提交前还需要进行一些自定义处理使用submitHandler 参数,其它的都比较简单,自己看看API就成了.

3.debug ,如果这个参数为true,那么表单不会提交,只进行检查,调试时十分方便.

4.rules ,所有的检验规则都写在这个参数里面

格式为:        ID : {rule1,rule2,...}

       (1) required: true         必输
          (2) number: true 只能输入数字(包括小数)
          (3) digits:true 只能输入整数
          (4) minValue: 3 不能小于3
          (5) maxValue: 100 最大不超过100
          (6) rangeValue:[50,100] 值范围为50-100
          (7) minLength: 5 最小长度(汉字算一个字符)
          (8) maxLength:        10 最大长度(汉字算一个字符)
          (9) rangeLength:[5,10] 长度范围为5至10位(汉字算一个字符)
          (10) 上面的minLength, maxLength, rangeLength 这三项除了text input之外还可以用于checkbox,select这两种控件
          (11) email:true 电子邮件
          (12) equalTo: "#field" 与#field值相同
          (13) dateISO:true       日期型,格式为1998/01/22         1999-12-12

5.messages ,自定义错误信息,格式与rules类似

分享到:
评论

相关推荐

    jquery validate 表单验证

    10. **分组验证**:通过`groups`属性,可以将多个字段作为一组进行验证,这样在其中任何一项未通过验证时,都会显示对应的错误消息。 以上就是jQuery Validate的基本使用和核心概念,通过熟练掌握这些,你可以轻松...

    jquery validate表单验证js

    除了基础的验证功能,jQuery Validate还支持分组验证、异步验证(如检查用户名是否已存在)和自定义验证条件。通过`groups`选项可以对一组关联的输入进行整体验证,而`remote`规则则可以实现异步验证。 总结,...

    jquery.validate分组验证代码

    在“jquery.validate分组验证代码”这个场景中,我们关注的是如何分步验证表单,即在用户填写表单的不同阶段分别进行验证,而不是等到最后一次性检查所有输入。 首先,我们需要引入jQuery库和jQuery Validate插件的...

    jquery validate 最稳定版本

    6. **分组验证** 可以通过`groups`选项将多个字段组合成一组进行验证,确保所有字段都通过验证后才提交表单。 7. **远程验证** 对于需要服务器端验证的场景,可以使用`remote`规则,将数据发送到服务器并等待响应...

    jquery-validate验证框架使用详解

    8. **分组验证**:如果你希望一次性验证多个表单元素,可以使用`groups`选项。例如,将用户名和密码作为一个整体验证: ```javascript $('#myForm').validate({ groups: { loginInfo: "username password" } }...

    jquery validation 多表单,多按钮,分组验证

    在`jqueryvalidationDemo`这个压缩包中,包含了一个使用jQuery Validation插件进行多表单、多按钮、分组验证的示例项目。你可以下载并运行这个项目,以便更深入地了解如何在实际项目中应用这些功能。 通过以上介绍...

    jquery-validate 验证插件

    4. **分组验证**:支持按需验证部分表单或所有表单。 5. **提交处理**:阻止非法数据提交,只有通过验证的表单才能提交。 ### 使用方法 1. **引入资源**:首先需要引入jQuery和`jQuery Validate`插件的JavaScript...

    jquery-validate验证输入框

    8. **分组验证** 可以对一组输入字段进行一次性验证,例如验证密码与确认密码是否一致: ```javascript rules: { password: { required: true, minlength: 6 }, confirmPassword: { equalTo: "#password" ...

    jquery-validate 表单验证

    4. **分组验证**:可以对多个表单元素进行分组验证,例如,一组密码输入框要求两次输入必须一致。 5. **插件扩展**:`jQuery Validate` 可以通过添加插件来扩展其功能,如 `additional-methods.js` 文件包含了更多...

    jQuery Validate初步体验(一)

    除了基本的验证规则,jQuery Validate还提供了丰富的扩展功能,比如自定义验证方法、异步验证(如检查邮箱是否已存在)、分组验证等。这些特性大大增强了表单验证的灵活性和可定制性。 总结来说,jQuery Validate是...

    jQueryValidate

    - **分组验证**:可以设置一组输入框,当其中任一输入框改变时触发验证。 - **异步验证**:允许进行网络请求验证,例如检查用户名是否已存在。 - **显示和隐藏错误**:可以配置错误消息的显示方式,如是否立即显示,...

    jQuery_validate

    7. **分组验证**:使用`groups`选项,可以将多个字段作为一个组进行验证,简化验证逻辑。 在实际项目中,正确配置和使用jQuery_validate可以大幅提升开发效率。例如,在注册页面,我们可以利用`required`和`remote`...

    jquery.validate例子

    `jQuery Validate`还支持异步验证、自定义验证方法、分组验证等高级功能。这些可以用来创建更复杂的验证场景,比如验证密码强度、手机号码格式等。 在`second.html`文件中,我们可以期待看到一个实际的表单示例,它...

    jquery.validate.js验证

    `jQuery Validate` 还提供了很多其他功能,如分组验证、远程验证、自定义错误消息定位等。你可以在官方文档中进一步了解并根据实际需求灵活运用。 总之,`jQuery Validate` 是一个强大且灵活的表单验证工具,它使得...

    jQuery.validate.js

    除了基本的验证规则,jQuery.validate.js还支持自定义规则、异步验证(如检查用户名是否已存在)、分组验证等高级功能。例如,你可以创建一个自定义规则来验证密码强度: ```javascript $.validator.addMethod(...

    jQuery验证控件jquery.validate.js使用说明+中文API

    - **分组验证**:通过`groups`选项可以将多个输入字段作为一组进行验证。 - **远程验证**:利用`remote`规则,可以将验证逻辑交给服务器处理。 - **显示与隐藏错误**:通过`errorElement`和`errorClass`控制错误提示...

    jquery validate

    7. **分组验证**:可以对一组相关的输入元素进行整体验证。 8. **显示错误提示**:可以自定义错误消息的显示方式,如在元素旁边显示或使用弹出框。 ### 使用示例 在`demo.html`中,可以看到一个简单的使用jQuery ...

    自带丰富示例的jQuery验证表单插件

    6. **分组验证**:可以对一组输入元素进行验证,比如多个字段组成一个完整的邮箱地址或电话号码。 7. **错误显示与定位**:通过配置,可以控制错误消息在何处显示,如显示在输入元素旁边,或者集中显示在表单底部。...

    高质量的jQuery 表单验证插件 Validate Form

    5. **分组验证**:可以按需设置分组验证,只在特定组内的所有字段都通过验证后才允许提交表单。 6. **动态验证**:根据用户的操作动态添加或移除验证规则,提高验证的灵活性。 ### 三、使用步骤 1. **引入依赖**...

    jQuery的表单校验插件validate

    1. **分组验证**:可以设置`groups`属性将多个字段组合成一个组进行验证,方便批量检查。 2. **异步验证**:利用`remote`规则进行服务器端验证,例如验证用户名是否已存在: ```javascript username: { ...

Global site tag (gtag.js) - Google Analytics