我在加载屏幕上有这段代码,在用户登录前等待五秒钟:
setTimeout(
function() {
$.doPost("http://mysite.com", {
username: results.rows.item(0).username,
password: results.rows.item(0).password
});
}, 5000);
在页面等待的同时,屏幕上还有一个“退出”按钮,如果点击,则需要发布此帖子。基本上,用户在自动登录之前有五秒钟的时间点击注销。注销按钮有一个onClick
,无论我在该功能中放置什么,它都会继续登录,如何让该按钮停止$.doPost
发生了什么?
答案 0 :(得分:6)
首先,将超时分配给变量:
var timer = setTimeout(
function () {
$.doPost("http://mysite.com", {
username: results.rows.item(0).username,
password: results.rows.item(0).password
});
}, 5000);
然后,在您的退出按钮代码中使用clearTimeout()
:
$('#button').click(function () {
clearTimeout(timer);
}
请注意变量的范围,因为它在两个单独的函数中使用。在这种情况下,在全局命名空间中声明它可能是一个好主意:
var timer;
$('#login').click(function () {
timer = setTimeout(
function () {
$.doPost("http://mysite.com", {
username: results.rows.item(0).username,
password: results.rows.item(0).password
});
}, 5000);
});
$('#logout').click(function () {
clearTimeout(timer);
});
如果您已将这两个事件都放在$(document).ready()
中,则可以在其中声明var timer
,以阻止任何污染。
答案 1 :(得分:1)
将setTimeout()的返回值保存为“timerHandle”,如果要取消该超时,请在该timerHandle上调用“clearTimeout()”。
答案 2 :(得分:1)
您需要保存setTimeout
的结果,并在该结果上调用clearTimeout
取消该结果。
答案 3 :(得分:0)
您是否可以使用全局布尔值来检查是否已单击注销按钮?像这样:
setTimeout(
function() {
if(!logoutClicked) {
$.doPost("http://mysite.com", {
username: results.rows.item(0).username,
password: results.rows.item(0).password
});
}
}
, 5000);