等到所有脚本完成后再启用按钮

时间:2012-07-06 13:34:54

标签: javascript jquery ajax html5 jquery-mobile

我在Stack Overflow上找到了这个问题的变种,但没有任何东西符合我的具体情况。希望有人有一些见解。

现在我正在开发一个Web应用程序,其中有一个按钮(技术上是一个锚标记),按下后会产生一个项目列表。问题是,如果用户连续两次快速按下此按钮,列表将产生两次 - 该按钮用于在产生列表之前清除列表以防止重复,但是有关脚本交互方式的原因是错误。该按钮通过对服务器进行ajax调用来生成列表。

现在,我已经尝试通过在按下按钮时将布尔值翻转为1来修复此错误,并使按钮在再次为0之前不执行任何操作。这似乎不起作用,无论代码在哪里我再次将值设置为0:我已经尝试将它放在ajaxGet函数的末尾,以及页面加载后,但两种解决方案都不起作用。

理想情况下,我想在页面完全加载和渲染完成后立即启用按钮。最终,需要的是防止用户连续两次按下按钮的方法。我考虑过使用计时器,但我宁愿不必诉诸于此。

有什么想法吗?如果你想要代码片段,请告诉我。

===========================================

编辑:谢谢大家的回答!我使用Fibrewire的答案来解决问题,它的效果很好。在按钮调用的方法的开头,我输入以下代码:

if (actionsDisabled == 1) {
    return;
}//if
else {
    actionsDisabled = 1;
    setTimeout("actionsDisabled=0;", 1000);
}//else

其中actionsDisabled是全局布尔值。它可能不像它可能那样密不透风(特别是,如果列表需要超过一秒加载,你会遇到问题),但它优雅且功能齐全,并且还有减少服务器请求的额外好处(如果流量曾经成为一个问题,你可以限制每5或10秒一次或几乎所有的呼叫)。再次感谢!

1 个答案:

答案 0 :(得分:1)

您可以在第一次点击后禁用该按钮

Disabling the button after once click

如果您需要用户以后能够再次单击该按钮,您可以使用setTimeout()方法在短暂停顿后重新启用它

http://www.w3schools.com/jsref/met_win_settimeout.asp

相关问题