我创建了JSFiddle。我正在动态添加一个包含输入元素的div(在真实应用中有多个字段)。当我单击Submit时,它只验证第一个而不是动态添加的HTML元素。我确保动态元素具有唯一ID。
有什么想法吗?
$('#submit').click(function (e) {
e.preventDefault();
validator = $("#myForm").validate({
rules: {
name: "required"
}
});
$("#myForm").valid();
});
更新: - 我注意到一些特殊的东西。在我添加一个新的输入元素,然后专注于这个新输入并单击提交后,我可以在firebug中看到,jquery会自动在此输入标记中添加“class = error”,显示错误消息。如果我尝试向第二个输入写入内容,它会从第一个输入中删除错误消息。
答案 0 :(得分:2)
将标记更改为此标记(您的提交按钮位于表单标记之外)
<form id="myForm">
<div id="section">
<input type="text" name="name" class="required"/>
</div>
<input type="button" id="add" value="add" />
<input type="submit" id="submit" value="submit" />
</form>
并且在你的jQuery内部已经有了这个
var count = 0;
$("#myForm").validate();
$('#add').on('click', function () {
var section = $('#section').clone(false).attr('id', function () {
return 'section' + (count);
});
section.find('input').attr('name', function () {
return 'name' + (count);
});
section.find('label').attr('for', function () {
return 'name' + (count);
});
section.insertAfter('#section');
count++;
});
这可以满足您的需求: