JQuery验证:验证隐藏的表单(可能的错误)

时间:2011-12-15 11:10:21

标签: javascript jquery validation

我正在使用JQuery Validation plugin来处理表单验证。

我遇到的问题是,当隐藏表单时,验证插件会忽略需要验证的字段,并直接跳转到提交表单。

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

我已经浏览了插件的options并搜索了这个问题,但我找不到任何指明隐藏表单中的字段被忽略的原因。

值得注意的是,如果页面上有两个表单,其中一个表单被隐藏而另一个表单显示,则如果两个表单都使用相同的验证方法,则表明两个表单都已成功验证。但是,如果您调用两个单独的验证方法,则隐藏表单中的字段仍会被忽略。

使用相同的验证函数验证两个表单:http://jsfiddle.net/Qg5WQ/1/

使用不同的验证功能验证两个表单:http://jsfiddle.net/Qg5WQ/2/

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

2 个答案:

答案 0 :(得分:11)

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

我在ignore电话中添加了hiddenvalidate选项。

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

答案 1 :(得分:7)

如果您查看documentation page上的ignore选项,则表示默认值为:hidden。这显然意味着如果您没有明确指定ignore选项,验证将忽略隐藏的输入。

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

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