使用jQuery Validate验证具有相同名称的多个字段

时间:2013-05-20 16:30:18

标签: 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" />
</form>

我正在使用jQuery Validation plugin验证它。麻烦的是,当我调用$('#main').valid()时,它只检查第一个字段是非空的。如何检查所有字段?

1 个答案:

答案 0 :(得分:-1)

OFFICIAL DOCUMENTATION:
jqueryvalidation.org/reference/#link-markup-recommendations

  对于需要验证的所有输入元素,

“强制要求:''name'属性,如果没有此插件,插件将无效。”name“属性也必须是唯一的表单,因为这是插件跟踪所有输入元素的方式。但是,每组radio或checkbox元素将共享相同的“名称”,因为此分组的值代表表单数据的单个部分。 “


<input type="text" name="foo" class="required" />
<input type="text" name="foo" class="required" />
<input type="text" name="foo" class="required" />

引用OP:

  

麻烦的是,当我拨打$('#main').valid()时,它只会检查。{   第一个字段是非空的。如何检查所有字段?

它与.valid()没有任何关系,使用其他jQuery Validate方法也会失败。这是因为所有三个字段都具有相同name的{​​{1}}。 对于此插件,每个foo 必须具有唯一 input

DEMO:jsfiddle.net/xaFZj/


修改

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

<强> jsfiddle.net/ed3vxgmy/

唯一的例外是广播或复选框组,其中每个分组中的元素将共享相同的name