繁体   English   中英

Ajax .done() 未检测到 form.submit

[英]Ajax .done() not detecting form.submit

我正在使用 ajax 从另一个文件中附加一个表单,它是一个由 onclick 事件触发的常规表单,就是这个:

<a href="javascript:void(0);" class="remitir" title="Reemitir Solicitud" data-id="'.$value['idsolicitud'].'"><i class="fas fa-lg fa-retweet"></i></a>

它背后的jquery是:

$('.remitir').on('click', function (e) {
        e.preventDefault();
        var id = $(this).data('id');
        remiteSolicitud(id);
    });

这是 AJAX 代码

function remiteSolicitud(x){
$.ajax({
        type: 'POST',
        url: 'anotherFile/',
        data: { id: x },
        cache: false,
        beforeSend: function () {
            $(".page-loader-wrapper").fadeIn();
        },
        success: function (e) {
            $('#myModal').modal('show');
            $('.modal-body').html(e);
        },
        complete: function () {
            $(".page-loader-wrapper").fadeOut();
        }
    }).done(function () {
        $("#formID").submit(function (event) {
            alert("Handler for .submit() called.");
            event.preventDefault();
        });

    });
}

现在我遇到的问题是 .done() 函数没有检测到我何时提交表单并重新加载页面。

有没有人有任何想法可能是什么? 我在另一个文件中有完全相同的代码,它可以工作。

您不需要在回调中附加事件,只需在执行请求之前附加它。

我正在使用 ajax 从另一个文件中附加一个表单

所以你需要使用事件委托.on()因为你的表单是动态添加到 DOM 的:

$("body").on("submit", "#formID", function (event) {
    event.preventDefault();

    alert("Handler for .submit() called.");
});

$.ajax({
    type: 'POST',
    url: 'anotherFile/',
    data: { id: x },
    cache: false,
    beforeSend: function () {
        $(".page-loader-wrapper").fadeIn();
    },
    success: function (e) {
        $('#myModal').modal('show');
        $('.modal-body').html(e);
    },
    complete: function () {
        $(".page-loader-wrapper").fadeOut();
    }
});

只需提交调用ajax的表单事件。

$("body").on("submit", "#formID", function (event) {
    event.preventDefault();
    //put your ajax call here

    alert("Handler for .submit() called.");
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM