使用jQuery验证验证几个同名字段

使用jQuery验证验证几个同名字段,jquery,jquery-validate,Jquery,Jquery Validate,我有一个用Perl CGI处理的HTML表单,如下所示: <form action="process.cgi" id="main"> <input type="text" name="foo" class="required" /> <input type="text" name="foo" class="required" /> <input type="text" name="foo" class="required" /> <

我有一个用Perl CGI处理的HTML表单,如下所示:

<form action="process.cgi" id="main">
  <input type="text" name="foo" class="required" />
  <input type="text" name="foo" class="required" />
  <input type="text" name="foo" class="required" />
</form>

我正在用这个方法验证它。问题是,当我调用
$('#main').valid()
时,它只检查第一个字段是否为非空。如何让它检查所有字段?

“强制执行:所有需要验证的输入元素都需要一个'name'属性,,没有这个属性插件将无法工作。“name”属性也必须是表单的唯一属性,因为这是插件跟踪所有输入元素的方式。但是,每组单选或复选框元素将共享相同的“名称”,因为此分组的值表示表单数据的一部分。”



报价操作:

问题是,当我调用
$('#main').valid()
时,它只检查 第一个字段非空。如何让它检查所有字段

它与
.valid()
没有特别的关系,使用其他jQuery验证方法也会失败。这是因为这三个字段都有相同的
名称
,对于这个插件每个
输入
必须有一个唯一的
名称

演示:


编辑

使用此插件时,不能有重复的名称。此演示清楚地表明,当
名称
属性重复时,插件将失败。没有解决方法,因为
名称
属性是插件跟踪表单元素的方式


唯一的例外是单选或复选框组,其中每个组中的元素将共享相同的
名称

“名称”属性是唯一标识javascript输入元素的一种方法。基本上,您可以用当前代码连续三次重写它,因此它不起作用。我不相信这是正确的由于“id”属性必须是唯一的,通常的做法是给几个元素赋予相同的名称,以便将它们作为数组呈现给处理系统(在本例中为Perl)看到这是有效的HTML,但是jQuery验证不能处理多个名称相同的元素——这里有一些讨论。如果你的HTML不能改变,那么你需要改变jQuery验证,这是有意义的,不知道这个特性。然后,似乎jQuery插件不考虑这一点,只选择第一个匹配而忽略其余的。。正如@SeanMill所述:在内部,jQuery Validate插件需要在所有表单输入上使用唯一的
名称
属性。即使
名称
属性没有用于任何内容,它仍然必须存在且唯一,才能使该插件正常工作。这是否有文档记录?@Kitters,“输入元素需要
name
属性,没有它验证插件就无法工作。“由于插件需要一个
名称
属性来跟踪所有内容,因此从逻辑上讲,它必须是唯一的名称。这很有意义。可惜它对我的申请不起作用;这似乎是一个很好的软件。抱歉,但required并不意味着unique,如果没有唯一的名称,它就无法工作,这实际上是胡说八道。有许多应用程序使用多个输入。例如,语言选择框。显然,在所有输入上都必须有名称
languages[]
。请不要阻止人们进行研究。抱歉@OzanKurt,你完全错了,在做出错误评论和否决投票之前,至少应该做自己的研究。使用此插件时,文本输入字段上不能有重复的名称:
<input type="text" name="foo" class="required" />
<input type="text" name="foo" class="required" />
<input type="text" name="foo" class="required" />