Jquery验证不适用于动态控件

时间:2013-08-27 09:33:12

标签: javascript jquery asp.net-mvc asp.net-mvc-4 jquery-validate

我需要对动态控件使用jquery验证。我试过但我无法实现它。在这个问题上帮助我。

查看:

<script type="text/javascript">
    $(document).ready(function () {
        var count = 0;
        $("#dynamicControlForm").validate();
        $("#AddControls").click(function () {
            count++;
            var elements = "<input type='text' id='txt" + count + "'class='rec'/><br/></br>";
            $(elements).appendTo("#dynamicControlForm");
            $(".rec").each(function () {
               $(this).rules("add", {
                required: true,
                messages: {
                    required: "Required field"
                }
            });
            });
        });
    });
</script>
<div id="DynamicControlsContainer">
    <input type="button" name="CreateControl" value="AddControl" id="AddControls" />
    <form action="/" method="post" id="dynamicControlForm">
    <input type="submit" name="DynamicControl" id="btnDynamicSubmit" value="Submit" />
    </form>
</div>

1 个答案:

答案 0 :(得分:0)

您的代码非常接近。

但是,动态创建的name元素中缺少input属性。

jQuery Validate插件要求所有要验证的数据输入元素必须每个都具有唯一的name属性。

这有效......

$(document).ready(function () {

    $(document).ready(function () {
        var count = 0;
        $("#dynamicControlForm").validate();
        $("#AddControls").click(function () {
            count++;
            var elements = "<input type='text' id='txt" + count + "' name='txt" + count + "' class='rec'/><br/></br>";
            $(elements).appendTo("#dynamicControlForm");
            $(".rec").each(function () {
                $(this).rules("add", {
                    required: true,
                    messages: {
                        required: "Required field"
                    }
                });
            });
        });
    });

});

工作演示http://jsfiddle.net/sVFgK/