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的验证规则无法移除。