1

我在 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 秒或其他一次)。再次感谢!

4

1 回答 1

1

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

单击后禁用按钮

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

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

于 2012-07-06T13:38:58.410 回答