Javascript 解决按钮点击过快的最佳常用方法是什么?

Javascript 解决按钮点击过快的最佳常用方法是什么?,javascript,jquery,Javascript,Jquery,我有一个按钮。单击按钮时,显示一个选择数据的对话框。 如果快速单击按钮,将显示多对话框。 目前,我有两种方法来解决这个问题 1.禁用使用 2.使用setTimeout和clearTimeout 还有其他更好的方法来解决这个问题吗? 多谢各位 解释: 如果禁用了使用,则在对话框关闭后,需要将按钮设置为可用。 目前,我使用这个代码 Util.prototype.lazyTriggerEvent = function(buttonId,event,callback){ var searchTr

我有一个按钮。单击按钮时,显示一个选择数据的对话框。
如果快速单击按钮,将显示多对话框。
目前,我有两种方法来解决这个问题
1.禁用使用
2.使用setTimeout和clearTimeout

还有其他更好的方法来解决这个问题吗?
多谢各位

解释:
如果禁用了使用,则在对话框关闭后,需要将按钮设置为可用。
目前,我使用这个代码

Util.prototype.lazyTriggerEvent = function(buttonId,event,callback){
    var searchTrigger=null;
    $("#"+buttonId).bind(event,function(){
        var text = $.trim($(this).val());
        clearTimeout(searchTrigger);
        searchTrigger = setTimeout(function(){
            callback(text);
        },500);
    })
};
//Util.lazyTriggerEvent("showDialgBtnId","click",function(){})

如果单击按钮触发ajax,并且有更多这样的按钮,是解决此问题的最佳常用方法。

首先使用禁用,然后在对话框显示时启用按钮。

您可以使用jquery的
.one()
处理程序,该处理程序将函数限制为运行一次:

描述:将处理程序附加到元素的事件。这个 每个事件类型的每个元素最多执行一次处理程序


或者,您也可以在单击时禁用按钮:

$('button').click(function() {
  $(this).prop('disabled', true);
  // Do stuff
});
要重新启用按钮,只需将以下内容添加到关闭模式功能中:

$('button').prop('disabled', false);

我想当您想显示对话时,您可以执行一个名为
showDialogue()
的函数

showDialogue()
中,您可以检查对话是否已启动

把你的注意力从按钮上移开。关注
showDialogue()


如果对话已启动,则不要在
showDialogue()
中执行其余代码,因为
showDialogue()
不会执行两次。它给人一种多点点击不起作用的错觉。这是您想要的解决方案,没有禁用和设置超时吗?

使用
只需单击一次就会发生类似
$('#btnid')。one(function(){//code here})
在相关对话框关闭之前将其禁用不是更好吗?(而不是基于超时的解决方案,该解决方案可能会在对话框仍然打开时重新启用。)@guradio在选择数据并关闭对话框后,需要再次单击以选择要更新的数据绑定然后单击绑定如果需要再次单击谢谢,我需要一种常见的方法来解决此问题problem@AR7,对不起,这是我的第一个答案谢谢,此按钮需要再次单击。不单击一次您可以随时重新启用按钮。@Eric Guan通常需要在关闭dailog后重新启用按钮。如果有更多类似的按钮,代码将……@YingYi使用我的第二个选项,您只需使用
$('button').prop('disabled',false)启用即可只要你需要。也许可以将其添加到闭合模态函数中。答案更新。一个功能是最好的。然后只需在对话框的“隐藏”或“关闭”事件处理程序中添加代码。问题:为什么不简单地使用模态窗口?谢谢,这是在显示对话框时解决此问题的一个好方法。对于ajax或其他场景,当快速单击按钮时,这不是一种最佳的
常用方法。在我的通常做法中,我只需禁用按钮三秒钟:)
$('button').prop('disabled', false);