0

我正在开发一个项目,其中从 jqote 模板加载文档对象模型,该模板使用带括号的输入名称在回发时生成数组。该项目是以这种方式构建的,因此可以在回发之前使用可排序的 jquery 对行进行排序。

<form id="the_form">
    <input type="text" id="field1" name="options[]" /><br />
    <input type="text" id="field2" name="options[]" /><br />
    <input type="text" id="field3" name="options[]" /><br />
    <input type="submit" value="submit" />
</form>

我的问题是 jquery validate 不能很好地处理包含括号的字段名称。有时它会验证,有时它会错过一两个字段。我一直在阅读很多其他帖子,说明这应该可以工作,我想知道我是否做错了什么或者是否有解决方法。

jQuery("#the_form").validate({
  rules: {
    "options[]": {
      required: true
    }
  }
});

我创建了一个 jsFiddle,以便其他人可以看到我正在经历的事情。如果您运行 jsFiddle 并在表单中选择“提交”,您会立即注意到它只验证第一个字段,但是如果您通过这些字段切换,您会看到不同的行为。谢谢!

http://jsfiddle.net/PV6j7/1/

4

3 回答 3

1

报价

“......我的问题是 jquery validate 不能很好地处理包含括号的字段名称。”

这是真的,但很容易用引号解决。但是,“括号”在这里并不是真正的问题。

根本问题是,如果每个字段上没有唯一的名称,插件将无法正常运行。没有办法解决这个问题。

使用 jQuery$.each()通过该.rules('add')方法分配规则在其他地方进行了讨论,但它被证明是一种可行的解决方法。那是因为根本问题不在于选择元素和分配规则;问题是插件使用该name属性来跟踪正在验证的元素。如果全部相同,这是不可能的name

失败的 jQuery.each()演示

于 2013-09-03T17:20:08.350 回答
1

那是因为它们目前都是同一个名字。

他们需要不同的名字才能工作

于 2013-09-03T16:58:47.267 回答
-1

尝试这个:

  jQuery("#the_form").validate({
  rules: {
    "options": {
      required: true
    }
  }
});
于 2013-09-03T17:00:04.570 回答