【问题标题】:Reset JavaScript timer on button click单击按钮时重置 JavaScript 计时器
【发布时间】:2025-12-21 12:50:16
【问题描述】:

我的 asp.net 页面出现问题,即使用户间歇性地输入数据也会显示会话超时警告。我们在母版页中设置了会话超时警告作为公司政策:

 var sessionTimeoutWarning = 45;
 sessionWarningTimer = setTimeout('SessionWarning()', sessionTimeoutWarning * 60 * 1000); 

在 aspx 页面上,我有:

    <script type="text/javascript">
        window.onload = function () {
            $('a').filter(function (index) { return $(this).text() === "Month to Date"; }).click();

        };

        function ValidateAndShowPopup() {
            if (Page_ClientValidate('grpSubmit')) {
                SubmitF();

            }
        }

我在更新面板中有按钮:

 <asp:Button ID="btnSubmitReport" runat="server" Text="Submit" OnClick="btnSubmitReport_Click" ValidationGroup="grpSubmit" OnClientClick="ValidateAndShowPopup()" CssClass="btn" />

唯一的两个解决方案是在按钮单击时刷新页面(我不想这样做),或者在页面上重置 javascript 计时器。 请指导如何在按钮单击时重置 javascript 计时器变量。

【问题讨论】:

  • clearTimeout(sessionWarningTimer);
  • 查看this post
  • asp:Button 不能同时处理 onClick 和 onClientClick 事件(优雅地)。如果您确定不想重新发布页面,那么您应该删除 onClick 事件。但是,我会删除 OnClientClick 并使用 registerStartUpscript 运行您的计时器重置功能

标签: javascript asp.net ajax session-timeout


【解决方案1】:

这是你想要做的吗?

var session;

function startSessionTimer() {
	session = setTimeout(function(){ 
    	alert("Session Expired"); 
    }, 2000);
}

function stopSessionTimer() {
    clearTimeout(session);
    alert("Session Expiration Stopped"); 
}

// Immediately start session timer
// startSessionTimer();
<button onclick="startSessionTimer()">Start Timer</button>
<button onclick="stopSessionTimer()">Stop Timer</button>

【讨论】: