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

时间:2013-10-09 20:54:51

标签: 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>

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

$('#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>

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

  

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

我如何解决这个问题?

这源自this question

2 个答案:

答案 0 :(得分:9)

引用OP:

  

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

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

“我如何解决此问题?”

第五次时间......

您可以 NOT 为每个name属性设置多个具有相同值的输入元素。

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

checkboxradio元素的集合或“群组”被视为“一个数据输入”,因此他们可以共享name但仅在群组内代表这一段表格数据。


引用OP:

  

“这来自this question

my answer to that same question的哪个地方,我说:

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

以及第二条评论on the OP,我说:

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

并在评论on my answer中,我说:

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

在我上一篇评论on the OP中,我说:

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

另见:

来源:

答案 1 :(得分:-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'
        }

    }
});
相关问题