是解决按钮点击太快的最佳常用方法

Is a best common way to solve button click too fast?

本文关键字:最佳 常用 方法 解决 按钮      更新时间:2023-09-26

我有一个按钮。点击按钮时,显示一个选择数据的对话框。
如果快速点击按钮,将显示多个对话框。
目前,我有两种方法来解决这个问题
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()处理器来限制一个函数只运行一次:

JQuery的。one()处理程序

描述:为元素的事件附加一个处理程序。的对于每个事件类型的每个元素,处理器最多执行一次。

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

或者你也可以禁用按钮点击:

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

要重新启用按钮,只需在close modal函数中添加以下代码:

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

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

在您的showDialogue()中,您将能够检查您的对话是否已启动。

别去想那个按钮。关注showDialogue()

如果你的对话被启动,那么不要执行showDialogue()中剩下的代码,就好像showDialogue()不会被执行两次一样。它给人的错觉是,多点点击不工作。它是你想要的解决方案,没有禁用和setTimeout?

首先使用disabled,然后当对话框显示时,启用该按钮