在等待期间取消js

use*_*557 1 javascript jquery timeout

我在加载屏幕上有一些代码,在用户登录前等待五秒钟:

  setTimeout(
    function() {
        $.doPost("http://mysite.com", {
                username: results.rows.item(0).username,
                password: results.rows.item(0).password
            });
  }, 5000);
Run Code Online (Sandbox Code Playgroud)

在页面等待的同时,屏幕上还有一个"退出"按钮,如果点击,则需要发布此帖子.基本上,用户在自动登录之前有五秒钟点击注销.注销按钮有一个onClick,无论我放在该功能中,它继续登录,我怎么能让那个按钮停止$.doPost发生?

Boj*_*les 6

首先,将超时分配给变量:

var timer = setTimeout(

function () {
    $.doPost("http://mysite.com", {
        username: results.rows.item(0).username,
        password: results.rows.item(0).password
    });
}, 5000);
Run Code Online (Sandbox Code Playgroud)

然后,在您的注销按钮代码中使用clearTimeout():

$('#button').click(function () {
    clearTimeout(timer);
}
Run Code Online (Sandbox Code Playgroud)

但要注意变量的范围,因为它在两个单独的函数中使用.在这种情况下,在全局命名空间中声明它可能是一个好主意:

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);
});
Run Code Online (Sandbox Code Playgroud)

如果你把两个事件都放进去$(document).ready(),你可以var timer在那里申报,以阻止任何污染.