如何使用jquery validate验证表单的动态部分

时间:2013-05-29 23:23:27

标签: jquery validation jquery-validate

我创建了JSFiddle。我正在动态添加一个包含输入元素的div(在真实应用中有多个字段)。当我单击Submit时,它只验证第一个而不是动态添加的HTML元素。我确保动态元素具有唯一ID。

有什么想法吗?

$('#submit').click(function (e) {    
    e.preventDefault();
    validator = $("#myForm").validate({
        rules: {
            name: "required"
        }
    });
    $("#myForm").valid();
});

更新: - 我注意到一些特殊的东西。在我添加一个新的输入元素,然后专注于这个新输入并单击提交后,我可以在firebug中看到,jquery会自动在此输入标记中添加“class = error”,显示错误消息。如果我尝试向第二个输入写入内容,它会从第一个输入中删除错误消息。

1 个答案:

答案 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++;
});

这可以满足您的需求:

  1. 每个输入都有一个唯一的名称
  2. 与相应输入字段匹配的标签
  3. updated fiddle here