首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证动态添加的输入字段

问验证动态添加的输入字段
EN

Stack Overflow用户
提问于 2012-07-18 15:25:41
回答 10查看 131.6K关注 0票数 44

我在下面的表单中使用了this的jquery验证插件。

代码语言:javascript
复制
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>

<script>
    $(document).ready(function(){
        $("#commentForm").validate();
    });

    function addInput() {
        var obj = document.getElementById("list").cloneNode(true);
        document.getElementById('parent').appendChild(obj);
    }
</script>

<form id="commentForm" method="get" action="">
    <p id="parent">
        <input id="list"  class="required" />
    </p>

    <input class="submit" type="submit" value="Submit"/>
    <input type="button" value="add" onClick="addInput()" />
</form>

当单击add按钮时,会动态添加一个新输入。但是,在提交表单时,只验证第一个输入字段。如何验证动态添加的输入?谢谢..。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2012-07-18 19:15:29

你的输入应该有'name‘属性。您需要动态添加规则,一种选择是在表单提交时添加它们。

这是我测试过的解决方案,它是有效的:

代码语言:javascript
复制
<script type="text/javascript">
   $(document).ready(function() {
        var numberIncr = 1; // used to increment the name for the inputs

        function addInput() {
            $('#inputs').append($('<input class="comment" name="name'+numberIncr+'" />'));
            numberIncr++;
        }

        $('form.commentForm').on('submit', function(event) {

            // adding rules for inputs with class 'comment'
            $('input.comment').each(function() {
                $(this).rules("add", 
                    {
                        required: true
                    })
            });            

            // prevent default submit action         
            event.preventDefault();

            // test if form is valid 
            if($('form.commentForm').validate().form()) {
                console.log("validates");
            } else {
                console.log("does not validate");
            }
        })

        // set handler for addInput button click
        $("#addInput").on('click', addInput);

        // initialize the validator
        $('form.commentForm').validate();

   });


</script>

和html表单部分:

代码语言:javascript
复制
<form class="commentForm" method="get" action="">
    <div>

        <p id="inputs">    
            <input class="comment" name="name0" />
        </p>

    <input class="submit" type="submit" value="Submit" />
    <input type="button" value="add" id="addInput" />

    </div>
</form>

祝好运!如果你觉得合适,请批准答案!

票数 55
EN

Stack Overflow用户

发布于 2015-11-05 01:12:24

添加新字段后重置表单验证。

代码语言:javascript
复制
function resetFormValidator(formId) {
    $(formId).removeData('validator');
    $(formId).removeData('unobtrusiveValidation');
    $.validator.unobtrusive.parse(formId);
}
票数 46
EN

Stack Overflow用户

发布于 2015-11-13 16:25:19

您需要在添加动态内容后重新解析表单,以便验证内容

代码语言:javascript
复制
$('form').data('validator', null);
$.validator.unobtrusive.parse($('form'));
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11536271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档