加载窗口前jquery设置超时

时间:2014-03-03 17:12:02

标签: javascript jquery html spring-mvc

我正在使用春天的webapp,我想插入一个计时器,每次用户按下按钮都会重置。

基本上,网页显示包含数据库数据的多行,每行用于不同的记录。

当用户按下按钮时,它会将记录的状态从草稿更改为“待批准”。然后重新加载整个页面。

因为可能会发生用户必须更改状态100行并且每次重新加载页面可能需要几秒钟的时间,我想在更改记录状态之后及之前设置计时器重新加载页面。

下面的代码确实设置了超时但我的问题是按下按钮后5秒钟重新加载页面,即使很多行按下了按钮。

    function submitDraft(pId) {
    $.getJSON("putInProcess.do", { id: pId }, function(data) {
        // display the message
        fadeInMsg(data.code, '', data.msg);

        if (data.code == 0) {
            $("#"+pId).remove();

            // relocate to the main page
            setTimeout(function() {
                delayWindowLoad(data.name);
            }, 5000);
        }
    });
}

如果用户再次按下按钮,有没有办法将超时重置为0?

由于

2 个答案:

答案 0 :(得分:1)

var timer;
function submitDraft(pId) {

if (timer) window.clearTimeout(timer);  //if we have another timeout, cancel it
timer = setTimeout(function() {         //store it into a variable so we can reference it
    delayWindowLoad(data.name);
}, 5000);

答案 1 :(得分:-1)

您可以存储对setTimeout()

的引用
var timeout = setTimeout(function() {
                delayWindowLoad(data.name);
            }, 5000);

然后在该引用上调用clearTimeout。

window.clearTimeout(timeout);

每次在clickTimeout中调用click事件,然后再次定义超时。

看看这个小提琴我跳起来有帮助。

jsFiddle