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

标签 javascript jquery ajax html jquery-mobile

我在 Stack Overflow 上发现了这个问题的变体,但没有一个与我的具体情况相匹配。希望有人有一些见解。

现在我正在开发一个 Web 应用程序,其中有一个按钮(从技术上讲是 anchor 标记),按下时会生成一个项目列表。问题是,如果用户连续两次快速按下此按钮,列表将生成两次——该按钮的目的是在生成列表之前清除列表以防止重复,但脚本交互的方式导致了这个漏洞。该按钮通过对服务器进行 ajax 调用来生成列表。

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

理想情况下,我希望能够在页面完全完成加载和呈现后立即启用该按钮。最终,需要的是一种防止用户连续两次按下按钮的方法。我考虑过为此使用计时器,但我不想不得不诉诸于此。

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

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

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

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

其中 actionsDisabled 是一个全局 bool 值。它可能不像它应该的那样密封(特别是,如果列表加载时间超过一秒,你会遇到问题),但它优雅且实用,并且具有减少服务器请求的额外好处(如果流量一旦成为问题,您可以将调用限制为每 5 秒或 10 秒或其他任何时间调用一次)。再次感谢!

最佳答案

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

Disabling the button after once click

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

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

关于javascript - 等到所有脚本都完成后再启用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11363224/

相关文章:

ajax - IE7 不消化 JSON : "parse error"

javascript - 无法阻止提交的表单刷新页面

JavaScript 日期对象重置

javascript - 如何在 D3JS 中设置 Circle Pack 的最小半径?

javascript - 当我用 Javascript 向下滚动结果时,我的代码出了什么问题

javascript - javascript/vue.js 页面中的 $ 符号未定义错误

javascript - -webkit-transition-property 用于翻译

jQuery 盒子幻灯片

javascript - 使用 Jquery/Javascript/CSS 进行页面加载时出现 CSS 'Transform: rotate'

javascript - 如何检查带有 "for"prop 的标签是否存在?