2011-05-11 216 views
36

我正在使用jQuery验证来验证表单。我的表单上有两个文本框,只有第一个文本框会添加“此字段是必需的”。信息。如果我从第一个类中删除“required”类,第二个类将会收到消息。jQuery验证只验证一个字段

HTML:

<form id="questionForm"> 
<div><input class="required" id="value" type="text" /></div> 
<div><textarea class="required" id="description"></textarea></div> 
<button type="submit">Save</button> 
</form> 

的javascript:

$("#questionForm").validate({ submitHandler: function() { 
     alert("valid"); 
    } 
}); 

为什么只有一个被验证?

编辑:我使用jQuery验证插件1.7

编辑2:我使用MVC 3

回答

102

我刚刚遇到这个问题我自己。拉我的头发了一个小时,但在这里它是:

在那里扔“name”属性,以及和可能做的伎俩。

+2

)我的意思是指你的输入字段:) – Jay 2011-06-09 15:18:12

+8

老兄谢谢!因为这个,几乎砸了我的脑袋。 – 2012-03-06 19:07:50

+0

花了一个小时调试我的表单只是一个简单的问题!我正要检查我的代码的每一个字母,以消除我的眉毛!非常感谢! – optimum 2012-04-17 13:21:13

1

不知道什么验证您正在使用的插件,很难确定问题。然而,似乎jQuery并不是循环遍历每个字段,但当它到达无效字段时它会停止。尝试使用jQuery $.each()方法,并使用一些条件来确保验证程序在验证程序到达无效字段时不会停止。

希望帮助,
spryno724

1

我想提醒阻止这两个领域的验证。 1警告后,其余的JavaScript停止。如果您改用$('#questionForm').validate();会发生什么情况?

+0

不,那不是。我尝试了你的建议,也删除了警报(),但它不起作用。我认为提交处理程序是一个回调函数,所以它不会被调用,直到表单被验证。 – 2011-05-11 23:08:54

+0

我也不确定,但是一旦环路被警报阻止,我就会遇到问题。不知道为什么,因为它不应该返回任何东西。 – 2011-05-11 23:44:59

+0

以及我从文档中得到的结果你看起来应该在表单验证时调用它(默认情况下它只是'form.submit();' – 2011-05-11 23:47:35

1

必须使用Jquery.validate()函数为每个要验证的DOM元素输入name属性。