动态添加的输入字段传递了验证,并且不能提交到另一个页面



i'M初学者,在动态添加的输入字段中参考以下来自:validate validate dynamed添加输入字段,当传递验证并提交不能到另一个页面

遵循脚本样本。

<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/jquery.validate.js"></script>
<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>

传递验证时,单击"提交对接"不能到action ="/action_page_post.php"

和HTML代码

<form class="commentForm" method="get" action="/action_page_post.ph">
    <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>

更改我进行了

  • on('submit')更改为submitbutton.onclick
  • 在IF条件中添加$('.commentForm').submit();如果验证为true

原因:由于您使用的是event.preventDefault(),因此它将防止表单的默认行为,因此没有下一页。因此,您必须使用$(form).submit();
手动提交表格以下代码将在普通页面上工作,但在上不使用,因此代码

$(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++;
        }
        $('input.submit').click(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");
                $('.commentForm').submit();
            } else {
                console.log("does not validate");
            }
        })
        // set handler for addInput button click
        $("#addInput").on('click', addInput);
        // initialize the validator
        $('form.commentForm').validate();
        
   });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
<form class="commentForm" method="get" action="action_page_post.php">
    <div>
        <p id="inputs">    
            <input type="text" class="comment" name="name0" />
        </p>
    <input class="submit" type="submit" value="Submit" />
    <input type="button" value="add" id="addInput" />
    </div>
</form>

最新更新