验证具有相同名称和类的字段得到"TypeError:e.validator.methods [o]未定义"

Rey*_*ier 1 jquery jquery-validate

我有这个HTML代码:

<section id="variations_holder">
    <input type="text" name="field1" class="pprice" />
    <br/>
    <input type="text" name="field2" class="pprice" />
    <br/>
    <input type="submit" />
</section>
Run Code Online (Sandbox Code Playgroud)

这是我用来处理验证的代码:

$('#variations_holder input.pprice').each(function() {
    $(this).rules('add', {
        required: true,
        number: true,
        messages: {
            required: "Debes introducir un precio de la variación",
            number: "El precio de la variación debe ser un valor numérico o decimal"
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是当HTML看起来像这样(通知输入具有相同的名称):

<section id="variations_holder">
    <input type="text" name="field1" class="pprice" />
    <br/>
    <input type="text" name="field1" class="pprice" />
    <br/>
    <input type="submit" />
</section>
Run Code Online (Sandbox Code Playgroud)

相同的代码停止工作并导致此错误:

TypeError:e.validator.methods [o]未定义

我该如何解决这个问题?

这源于这个问题

Spa*_*rky 9

引用OP:

"...... HTML看起来像这样(通知输入具有相同的名称):"

<input type="text" name="field1" class="pprice" />
<input type="text" name="field1" class="pprice" />
Run Code Online (Sandbox Code Playgroud)

"我如何解决这个问题?"

对于第五时间...

每个属性都不能有多个具有相同值的输入元素name.

因为插件无法跟踪元素; 此规范没有解决方案也没有解决方法.

(或者元素的集合或"组" 被视为"一个数据输入",因此它们可以共享但仅在表示此单个表单数据的组内.checkboxradioname)


引用OP:

"这来源于这个问题 "

我对同一个问题的回答中,我说:

  1. "... jQuery Validate插件要求每个输入元素都包含一个唯一的name属性.这就是插件跟踪元素的方式......"

以及关于OP的第二次评论,我说:

  1. "你不能有多个具有相同名称的元素.jQuery Validate要求名称是唯一的."

在评论我的回答时,我说:

  1. " 但是,无论如何创建和应用规则,每个元素都必须包含唯一的名称."

在我对OP的最后评论中,我说:

  1. "... jQuery Validate插件需要数据输入元素上的唯一名称,因为这是插件在内部跟踪它们的方式.没有办法解决这个问题."

另见:

资料来源: