javascript - 如何在ajax进程完成之前创建延迟?

标签 javascript jquery ajax

我有一个名为“插入评论”的按钮。当用户单击它时,将提交表单(使用ajax)并在数据库中插入新评论。现在我的问题是,当用户在此按钮上单击两次(快速)时,评论将被插入两次。

现在我想防止再次插入,我的意思是我想在ajax进程工作时禁用所有事件...可能吗?

这是我的代码:

 $("#bottunId").click(function(){
        $("#form-"+pure_id).submit(function(e){
           e.preventDefault(e);            
           comment(pure_id);
         });
});

function comment(pure_id){

    $("#textarea-"+pure_id).animate({opacity: 0.5}, 0);
    var frm = $('#form-'+pure_id);

    $.ajax({
        url :  frm.attr('action'),
        type : frm.attr('method'),
        data : frm.serialize(),
        dataType : 'JSON',
        success : function (commenting_system) {

        if(commenting_system.error_msg){
            $(".error_msg").html(commenting_system.error_msg); $(".error").fadeIn(200);
            close_error_msg = setTimeout(function(){ $(".error").fadeOut(100); }, 5000);
            $("#textarea-"+pure_id).animate({opacity: 1}, 0);
        }

        else{
                $("#table-"+pure_id).append('<tr><td>new row</td></tr>');
                $("#textarea-"+pure_id).animate({opacity: 1}, 0);
        }

        } // for success
    }); // for ajax
} // function comment

最佳答案

这应该适合你。它在表单中设置一个名为 subscribed 的标志,这将阻止表单在刷新页面之前再次提交。

$("#bottunId").click(function(){

    $("#form-"+pure_id).submit(function(e){

        if ($(this).data('submitted') !== true) {
            // Mark it so that the next submit can be ignored
            $(this).data('submitted', true);

            // submit form
            comment(pure_id);
        }
        e.preventDefault();
    });

});

关于javascript - 如何在ajax进程完成之前创建延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32782581/

相关文章:

javascript - charAt() 给我不好的输出

javascript - 在启动我的 selenium 脚本之前,如何在浏览器的 localStorage 中使用 ruby​​ 设置项目

javascript - 根据验证结果切换元素可见性

javascript - Ajax 和下载 PDF

c# - 如何让浏览器后退按钮通过 AJAX 调用带你返回?

javascript - 添加 HTML - 使用 Javascript 徽章

javascript - 如何以编程方式更改 Firefox 代理设置?

javascript - Jquery UI 选项卡是否有 "after collapse"事件?

jquery - ASP.NET 4 jquery ajax webmethod 调用

javascript - Ajax 调用 Cordova ios SecurityError : DOM Exception 18