1

我有这个 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>

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

$('#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"
        }
    });
});

它可以工作,但是当 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>

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

类型错误:e.validator.methods[o] 未定义

我该如何解决这个问题?

这是从这个问题得出的

4

2 回答 2

9

引用操作:

“... HTML 看起来像这样(注意输入具有相同的名称):”

<input type="text" name="field1" class="pprice" />
<input type="text" name="field1" class="pprice" />

“我该如何解决这个问题?”

第五...

对于每个属性,您不能有多个具有相同值的输入元素。name

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

或元素的集合或“组”被视为“一个数据输入”,因此它们可以共享一个,但只能在表示该单个表单数据的组内。checkboxradioname


引用操作:

“这源于这个问题

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

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

以及在OP的第二条评论中,我说:

  1. “您不能有多个具有相同名称的元素。jQuery Validate 要求名称是唯一的。”

在对我的回答发表评论时,我说:

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

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

  1. “...... jQuery Validate 插件需要数据输入元素上的唯一名称,因为这就是插件在内部跟踪它们的方式。没有办法绕过这个要求。”

另见:

资料来源:

于 2013-10-09T21:56:11.530 回答
-1

我遇到了同样的问题,您的解决方案如下。

使用的插件:

HTML:

<input type="text" name="field1[]" class="pprice-group" />
<input type="text" name="field1[]" class="pprice-group" />

JS:

$("#form").validate({
    // Rules for form validation
    rules:
    {
        "field1[]":
        {
            require_from_group: [1, ".pprice-group"]
        }
    },

    // Messages for form validation
    messages:
    {
        "field1[]":
        {
            require_from_group: 'At least {0} field required'
        }

    }
});
于 2015-02-26T08:34:26.243 回答