是解决按钮点击速度过快的最常用方法吗?

时间:2016-08-24 02:43:40

标签: javascript jquery

我有一个按钮。当点击按钮时,显示一个选择数据的对话框 如果快速单击按钮,将显示多个对话框 目前,我有两种方法来解决这个问题 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,并且有更多这样的按钮,则是解决此问题的最常用方法。

3 个答案:

答案 0 :(得分:2)

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

JQuery's .one() handler

  

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

$('button').one('click', function() {
  // Do stuff
});

或者您也可以在点击时禁用该按钮:

$('button').click(function() {
  $(this).prop('disabled', true);
  // Do stuff
});

要重新启用该按钮,您只需将以下内容添加到关闭模式函数中:

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

答案 1 :(得分:1)

我想当你想要显示对话时,你执行一个名为showDialogue()的函数。

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

远离按钮。专注于showDialogue()

如果您的对话已启动,请不要在showDialogue()中执行其余代码,就像showDialogue()未执行两次一样。它给人一种多点击不起作用的错觉。它是你想要的解决方案,没有disable和setTimeout?

答案 2 :(得分:0)

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