首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止asp:Timer在未响应前发送tick?

如何防止asp:Timer在未响应前发送tick?
EN

Stack Overflow用户
提问于 2012-09-24 22:36:55
回答 2查看 1.7K关注 0票数 5

我有一个ASP.NET网站。我希望用户做出决定,并在一定的时间内单击一个给定的按钮,然后将他重定向到另一个页面。如果他没有做出决定,他仍然会被重定向,并在我的脑海中留下“没有做出选择”的标记。

我使用asp:Timer在时间用完后启动回发。我正在通过在Page_Load处理程序中调用Response.Redirect('page.html', false)来进行重定向。在这种情况下,我可以在实际重定向之前处理button_clicktimer_tick事件。在这些事件之一被处理之后,页面被呈现并完成重定向。

但我有两个问题。首先,如果输入处理的时间足够长,则触发第二个计时器的计时,启动新的回发,并取消我的当前!其次,如果用户在时间到期前单击一个按钮,定时器滴答会在重定向完成之前发生,并再次覆盖对用户单击的处理!

如何解决这些问题?如何在客户端禁用计时器,在触发第一个滴答后或用户点击按钮后?或者解决我的任务的更好的方法是什么?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-25 18:46:09

我找到了这两个问题的解决方案。

  1. 我将asp:Timer放在asp:UpdatePanel控件中。对于我来说,这是正确的做法,因为我不需要在下一个问题之前刷新整个页面。但是我发现在这种情况下,来自定时器的滴答声并不会相互干扰。
  2. 正如here所描述的,我可以像这样使用javascript禁用asp:Timer

$find("TimerMaxJudgeTime")._stopTimer();

然后我将它绑定到按钮的onclick事件上,就完成了。由于计时器放置在UpdatePanel中,因此在回发后会自动重新创建并启用它。

票数 1
EN

Stack Overflow用户

发布于 2012-09-24 23:11:17

作为一种变体,您可以使用客户端setTimeout函数来代替计时器控件,并在按钮单击时清除超时:

代码语言:javascript
运行
复制
 <script type="text/javascript">
      var redirectTimeout = setTimeout(function () {
           location.href = '<%= ResolveClientUrl("~/page.html") %>';
      }, 5000);
 </script>

 <asp:Button runat="server" ID="SubmitButton" Text="Submit" 
      OnClientClick="clearTimeout(redirectTimeout);" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12567226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档