使用jQuery验证插件验证多个具有相同名称的表单字段

使用jQuery验证插件验证多个具有相同名称的表单字段,jquery,jquery-validate,Jquery,Jquery Validate,我使用jQuery validate插件和()成功地验证了多个具有相同名称的表单字段,例如first\u name[] 但是,错误消息仅显示字段的第一个实例,而不是下一个实例 为什么呢 作为记录,上述链接中提供的解决方案包括编辑jquery.validate.js并将checkForm函数内容更改为: checkForm: function() { this.prepareForm(); for ( var i = 0, elements = (this.currentElements = th

我使用jQuery validate插件和()成功地验证了多个具有相同名称的表单字段,例如
first\u name[]

但是,错误消息仅显示字段的第一个实例,而不是下一个实例

为什么呢

作为记录,上述链接中提供的解决方案包括编辑jquery.validate.js并将checkForm函数内容更改为:

checkForm: function() {
this.prepareForm();
for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
    if (this.findByName( elements[i].name ).length != undefined && this.findByName( elements[i].name ).length > 1) {
        for (var cnt = 0; cnt < this.findByName( elements[i].name ).length; cnt++) {
                this.check( this.findByName( elements[i].name )[cnt] );
        }
    } else {
        this.check( elements[i] );
    }
}
return this.valid();
}

引用OP

“我使用jQuery validate插件和此解决方案,成功地验证了多个具有相同名称的表单字段,例如
first_name[]
()”

我强烈建议不要编辑任何插件的源代码

  • 您必须确保在更新时不会写得太多

  • 你会给下一个在项目中工作的人造成混乱

  • 您可能会引入任意数量的未知bug

这是一个非常流行且经过全面测试的插件。编辑源代码并忘记所有这些。。。你也可以编写自己的插件

此外,你引用的黑客已经三年多了。。。你怎么知道它在最新版本的插件上仍然可以正常工作(如果它曾经工作过的话)


引用OP

但是,错误消息仅显示在字段的第一个实例中,而不是下一个实例

为什么?”

当您有多个字段共享同一个
名称时,这个插件就会发生这种情况。。。只有第一个实例被识别。这方面没有解决办法

该插件旨在通过表单的
name
属性跟踪表单输入。我不知道任何黑客将如何绕过这一点,因为你仍然需要跟踪每一件事而不重复

但是,您根本不需要执行这些操作。该插件设计用于处理作为数组一部分的字段
name
<代码>“字段[1]”
“字段[2]”
等均可接受

  • 如果表单是静态的,只需创建唯一的字段名

  • 如果表单是动态的,请使用增量计数器正确创建数组索引,以便每个字段都以唯一的
    名称结束

rules: {
"field_name[]": "required"
}