我有这个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]未定义
我如何解决这个问题?
答案 0 :(得分:9)
引用OP:
“...... HTML看起来像这样(注意输入具有相同的名称):”
<input type="text" name="field1" class="pprice" />
<input type="text" name="field1" class="pprice" />
“我如何解决此问题?”
第五次时间......
name
属性设置多个具有相同值的输入元素。因为插件无法跟踪元素;此规范没有解决方案也没有解决方法。
( checkbox
或radio
元素的集合或“群组”被视为“一个数据输入”,因此他们可以共享name
但仅在群组内代表这一段表格数据。)
引用OP:
“这来自this question”
在my answer to that same question的哪个地方,我说:
- “... jQuery Validate插件要求每个输入元素都包含唯一的名称属性。这就是插件跟踪元素的方式....”
醇>
以及第二条评论on the OP,我说:
- “您不能拥有多个具有相同名称的元素.jQuery Validate要求该名称是唯一的。”
醇>
并在评论on my answer中,我说:
- “但,每个元素必须包含唯一名称,无论规则如何创建和应用。”
醇>
在我上一篇评论on the OP中,我说:
- “... jQuery Validate插件需要数据输入元素上的唯一名称,因为这是插件在内部跟踪它们的方式。没有办法解决这个问题。”
醇>
另见:
来源:
答案 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'
}
}
});