2011-12-15 99 views
5

我使用JQuery Validation plugin来处理表单验证。JQuery验证:验证一个隐藏的表单(可能的错误)

我遇到的问题是,当一个形式是隐藏的,则验证插件忽略了需要的字段来进行验证,并直接跳转到提交表单。

例子:http://jsfiddle.net/Qg5WQ/

我曾通过插件的options一看,一派这个问题,但我无法找到任何指定为什么一个隐藏的表单中的字段被忽略。

值得注意的是,如果有一个页面,其中一个是隐藏的,一个则显示,如果两种形式使用相同的验证方法这两种形式都成功验证的两种形式。但是,如果您调用两个独立的验证方法,则隐藏表单中的字段仍将被忽略。

使用相同的验证功能验证两种形式:http://jsfiddle.net/Qg5WQ/1/

使用不同的验证功能验证两种形式:http://jsfiddle.net/Qg5WQ/2/

有谁知道这是一个错误,还是有特定的验证隐藏表单的方法?

+0

我面临同样的问题,所以我正在做我自己的代码来验证窗体。 (当我在Web窗体的.aspx) – manny 2011-12-15 11:47:43

回答

11

试一下这个http://jsfiddle.net/Qg5WQ/3/

我加了ignorehidden选项将validate通话。

$("form").validate({ 
    ignore: 'hidden', 
    rules: { 
    "first": "required" 
    }, 
    invalidHandler: function() { 
    alert("error"); 
    }, 
    submitHandler: function(form) { 
    alert("no error"); 
    } 
}); 
+0

谢谢,奇怪的是没有工作。我似乎可以在忽略字段中添加任何内容,并且它可以正常工作。我想这必须强制它遍历字段,这使我认为这一定是一个错误。谢谢您的帮助! – 2011-12-15 11:31:49

+0

@MyHeadHurts - 是的,我注意到,非常奇怪,但是它仍然有效=) – Cyclonecode 2011-12-15 11:39:38

7

如果检查出的documentation pageignore选项,它说,默认值是:hidden。这显然意味着,如果你没有明确指定ignore选项,验证会忽略隐藏的输入。

只需定义ignore选项(它可以留空),它应该可以解决问题。

$("form").validate({ 
    ignore: '', 
    rules: {"hidden_field": {required:true}} 
});