同一按钮单击时的表单验证和 Ajax 调用

Posted

技术标签:

【中文标题】同一按钮单击时的表单验证和 Ajax 调用【英文标题】:Form Validation & Ajax Call on Same Button Click 【发布时间】:2018-07-17 13:55:32 【问题描述】:

我有一个提交表单的按钮,我想先触发 jquery Validation 并检查表单是否有效。 我尝试在下面执行此操作,但没有任何效果,甚至控制台中也没有显示任何内容。

html

    <form method="POST" action="<?php echo $url;?>" id="add_group" class="add_group">
    <!-- My other fields-->
<input class="btn btn-primary" type="button" name="submit" id="submit" value="Submit">
</form>

JQuery AJAX 调用:

$('#submit').click(function()
        formSubmit();
    );
function formSubmit()
    
        var group_url = " url('admin/groups/add') ";
        var redirect_group_url = " url('admin/groups') ";
        var token = $('#token').val();
        $.ajax(
            headers: 
                'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
            ,

            url: group_url,
            type: 'POST',
            data: $("#add_group").serialize(),            
            success: function (data) 
                data = JSON.parse(data);
                console.log(data);
                if(data.status == 'failed' || data.status == false)
                
                    $('.alert-danger').show();
                    $('.alert-danger').html(data.message);
                 else 
                                    
                    window.location.href = redirect_group_url;
                    /*$('.alert-success').show();
                    $('.alert-success').html(data.message);*/                    
                
            ,
            error: function (data)                 
                $('.alert-danger').show();
                $('.alert-danger span.show_error_msg').html(data.message);
            
        );
        setTimeout(function()  $(".alert").hide(); , 3000);
    

我保存在 document.ready 函数中的我的 Jquery 验证

$('.add_group').on('click','#submit', function()
        //var $this = $(this);
        $("#add_group").validate(
            rules: 
                group_title:    
                    required: true,
                , 

                group_id:
                    required: true,
                ,
            ,       
            messages: 

                group_title: 
                    required: "Please enter group title",
                ,

                group_id:
                    required: "Please choose group",
                ,
            ,
            errorPlacement: function (error, element) 
                var attr_name = element.attr('name');
                error.insertAfter(element);            
            
        );

        );

谁能告诉我哪里错了?

【问题讨论】:

$("#add_group").validate(..) 有返回值吗? 不是它没有返回任何东西 @BitsPlease 你为什么不使用 type="submit" 而不是 "button" @Kirit 我想试试看我有一个 ajax 调用所以 @BitsPlease 希望这会对您有所帮助:scotch.io/tutorials/submitting-ajax-forms-with-jquery 【参考方案1】:
$('#add_group').submit(function()
          $("#add_group").validate(
            rules: 
                group_title:    
                    required: true,
                , 

                group_id:
                    required: true,
                ,
            ,       
            messages: 

                group_title: 
                    required: "Please enter group title",
                ,

                group_id:
                    required: "Please choose group",
                ,
            ,
            errorPlacement: function (error, element) 
                var attr_name = element.attr('name');
                error.insertAfter(element);            
            
        );

        );
    );

//按原样尝试,但将按钮类型更改为提交

【讨论】:

以上是关于同一按钮单击时的表单验证和 Ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章

验证表单输入,然后单击启动 ajax 请求

使用引导程序 nav-pill 单击下一步按钮时的表单验证

Stripe Elements,表单提交时的输入验证

jQuery 表单验证和 Ajax 提交的问题

thinkPHP3.2.3利用Ajax前台实现验证码验证,但通过form表单的按钮提交后,验证码一直错误!如何解决?

AJAX 表单验证并提交