我有以下代码

$('#modal').dialog("option", "buttons", {
    Save: SaveMethod,
    Cancel: function() {
        $(this).dialog("close");
    }
});


当我快速多次单击“保存”按钮时(即使我将按钮设置为disabled='disabled'),SaveMethod函数仍会运行几次。在第一个方法调用结束之前,如何防止按钮单击?

最佳答案

SaveMethod范围之外的变量可以用来跟踪保存时间。

如果SaveMethod快速完成,您仍然可以多次单击该按钮。在这种情况下,您可以在对话框关闭事件中设置saving = false,也可以将saving = false替换为setTimeout(function(){ saving = false; }, 500);,以便在允许再次保存之前稍作延迟。

$('#modal').dialog("option", "buttons", {
    Save: SaveMethod,
    Cancel: function() {
        $(this).dialog("close");
    }
});

var saving = false;

function SaveMethod(){
  if(saving) return;
  saving = true;
  //save code
  saving = false;
}

09-27 07:42