在动态生成的元素上使用jquery validate插件添加验证规则

时间:2013-06-24 19:54:51

标签: jquery jquery-validate

我正在尝试为从html文字创建的输入添加一些验证规则。

这是我的小提琴:http://jsfiddle.net/idoxobi/HW4xY/1/

HTML:

<form id='form' method='post' >
    <div id='details'>
    </div>
    <a id='Add' href='javascript:void()'>Add</a>
    <br />
    <input type='submit' />
</form>

JavaScript的:

$(document).ready(function() {
    $('#form').validate();
    var input = "<input type='text' class='item' name='item' />";
    $('#Add').click(function() {
        $('#details').append(input+'<br />');
        $('#details input:last').rules('add', {
            required: true
        });
    });
})

似乎只是在第一个元素中识别规则,但其他元素在没有验证的情况下通过。

我是第一次使用此插件,但在论坛中,每个人都说这应该可以正常工作。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

检查一下:

HTML:

<form id='form' method='post' >
    <div id='details'>
    </div>
    <a id='Add' href='#'>Add</a>
    <br />
    <input type='submit' />
</form>

JS:

$(document).ready(function() {
    $('#form').validate();
    var i = 0;
    $('#Add').click(function() {

        var input = "<input type='text' class='item' name='item"+ i++ +"' />";
        $('#details').append(input+'<br />');
        $('#details input:last').rules('add', {
            required: true
        });

        return false;
    });
});

on jsfiddle

答案 1 :(得分:0)

因为每个输入字段名称相同,并且已由@ YD1m修复,我的方法如下:

$(document).ready(function() {
    $('#form').validate();
    var counter = 0;
    $('#Add').click(function() {
        counter++;
        $('#details').append("<input type='text' class='item required' name='item_" + counter + "' />" + '<br />');
    });
});