为大型表单有效地创建规则

时间:2010-08-25 18:23:01

标签: jquery jquery-validate

我正在使用jQuery validate plugin来验证包含大量字段的表单:

<td><input name="first_name0"></td>
<td><input name="last_name0"></td>
<td><input name="age0"></td>
<td><input name="first_name1"></td>
<td><input name="last_name1"></td>
<td><input name="age1"></td>
<td><input name="first_name2"></td>
<td><input name="last_name2"></td>
<td><input name="age2"></td>
...
<td><input name="first_name200"></td>
<td><input name="last_name200"></td>
<td><input name="age200"></td>

将验证规则添加到所有相同字段的最佳方法是什么?目前我正在添加这样的规则,但是在100行之后它很慢。

$("input[name*=age]").each(function(i) {
    $(this).rules("add", {
        digits: true
    });
});

$("input[name*=first_name], input[name*=last_name]").each(function(i) {
    $(this).rules("add", {
        digits: true
    });
});

1 个答案:

答案 0 :(得分:3)

没有必要循环,它将在Query集上运行,如下所示:

$("input").filter("[name*=age], [name*=first_name], [name*=last_name]")
          .rules("add", {
             digits: true
          });

为他们提供课程将更加可维护,例如:

<td><input name="first_name0" class="digits"></td>
<td><input name="last_name0" class="digits"></td>
<td><input name="age0" class="digits"></td>

然后你可以这样做:

$("input.digits").rules("add", {
  digits: true
});