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

My *_*rts 5 javascript validation jquery

我正在使用JQuery Validation插件来处理表单验证.

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

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

我已经浏览了插件的选项并搜索了这个问题,但我找不到任何指定为什么忽略隐藏表单中的字段的内容.

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

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

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

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

Cyc*_*ode 11

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

我在调用中添加了ignore:hidden选项validate.

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

  • 只是一个快速的说明,这是有效的原因是因为你错过**前面的冒号:隐藏**.你基本上是在告诉它忽略任何可能存在的html**<hidden>**标签,而不是告诉它忽略隐藏类型的输入. (3认同)

Dom*_*nic 7

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

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

$("form").validate({
  ignore: '',
  rules: {"hidden_field": {required:true}}
});
Run Code Online (Sandbox Code Playgroud)