jQuery在.ajax()之前只允许单击一次。

| 我试图只单击一次按钮,然后通过ajax提交一些数据。我面临的问题是用户可以单击50倍,并且每次都要POST提交数据?
jQuery(\"#id\").unbind(\'click\');

jQuery.ajax({
    type: \"POST\",
    url: ajax_url,
    data: ajax_data,
    cache: false,
    success: function (html) {
        location.reload(true);
    }
});
如何确保如果用户单击“ 1”×100x,则数据仅提交一次?然后重新启用#ID?     
已邀请:
        只需禁用按钮
$(\"#id\").attr(\"disabled\", \"disabled\")
然后在成功功能中启用它
$(\"#id\").removeAttr(\"disabled\")
    
        您可以在jQuery中使用
.one()
函数。
jQuery(\"#id\").one(\'click\', function()
{
    jQuery.ajax({
        type: \"POST\",
        url: ajax_url,
        data: ajax_data,
        cache: false,
        success: function (html) {
            location.reload(true);
        }
    });
});
请记住,这将完全删除click事件,即使您的ajax错误,您仍然无法再次单击它。     
        最简单的方法是使用一个在成功触发时会重置的标志:
if(clicked == False){
    clicked = True;
    jQuery(\"#id\").unbind(\'click\');

    jQuery.ajax({
       type: \"POST\",
       url: ajax_url,
       data: ajax_data,
       cache: false,
       success: function (html) {
           location.reload(true);
           clicked = False;
       },
       error: function () {
            alert(\"Error happened\");
           clicked = False;
       }
    });
}
    
        您可以禁用控制,或使用许多模态库之一来显示纺车 在SO上看到这个Jquery模态对话框的问题     
        您可以禁用click事件上的按钮,并在ajax请求完成时将其启用。     
        在您的click事件中,您可以禁用该按钮,然后在ajax事件的成功功能中重新启用该按钮。 另一个选择是在要单击的元素上设置一个参数,以指示该按钮已被单击,然后检查是否设置了该参数(如果未设置则不发送Ajax请求,然后发送)。 ajax完成后,您可以再次取消设置参数以使其运行。     
        尝试这个:
$(document).ajaxStart({ function() {
 $(\'#submit_button\').click(function(){
   return false;
 });
});
其中:#submit_button是要禁用的元素U的ID 该代码将禁止单击提交按钮     

要回复问题请先登录注册