【发布时间】:2013-07-13 16:44:14
【问题描述】:
我有一个表格,我想使用the jQuery Validation plugin 进行验证。我目前对使用 jQuery .on() 动态创建的数组 (name="inputname[]") 的输入元素有疑问。让我解释一下这个问题:
- 有一个表单,存在一个名为
name[]的输入文本。 - 有一个添加更多输入文本的按钮,该元素使用 .on() 执行。我点击了 2 或 3 次,所以输入文本会超过 1 个。
- 我点击提交,表单已正确验证,但仅验证第一个创建的数组元素,而不验证另一个元素。
对于完整的代码,我在这里创建了一个 jsfiddle:http://jsfiddle.net/ThE5K/4/
jQuery:
$(document).ready(function () {
// MODE 1
// With [] or array name <<<< this one is not working
$("#addInput").on('click', function () {
$('#inputs').append($('<input class="comment" name="name[]" />'));
});
/* MODE 2
Without [] or array name <<<< this one is working
var numberIncr = 1;
$("#addInput").on('click', function () {
$('#inputs').append($('<input class="comment" name="name' + numberIncr + '" />'));
numberIncr++;
});
*/
$('form.commentForm').on('submit', function (event) {
$('input.comment').each(function () {
$(this).rules("add", {
required: true
})
});
event.preventDefault();
console.log($('form.commentForm').valid());
})
$('form.commentForm').validate();
});
HTML:
<form class="commentForm">
<div id="inputs"></div>
<input type="submit" />
<span id="addInput">add element</span>
</form>
我在其中创建了两种模式,一种是工作模式(不带数组名称的动态输入文本),另一种是不工作模式(带数组名称的动态输入文本)。
我一直在研究这些解决方案,但不幸的是没有一个能奏效:
- jquery validate add rules for an array input
- jquery validate is not working with dynamic content
- jQuery validate dynamic input array
请帮忙。
【问题讨论】:
-
您在提交表单时添加规则。这都是错误的。您应该在创建新字段后立即添加规则。
-
请在 OP 中包含足够的代码以创建简洁的演示。您的 OP 应该是完全“独立的”,而不是依赖于外部链接。我已经编辑了你的 OP 以包含完整的代码。