我有一个按钮。当点击按钮时,显示一个选择数据的对话框 如果快速单击按钮,将显示多个对话框 目前,我有两种方法来解决这个问题 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,并且有更多这样的按钮,则是解决此问题的最常用方法。
答案 0 :(得分:2)
您可以使用jquery的.one()
处理程序将函数限制为运行一次:
描述:将处理程序附加到元素的事件。该 每个事件类型的每个元素最多执行一次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)
首先使用禁用,然后在显示对话框时,启用按钮。