我正在使用春天的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?
由于
答案 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事件,然后再次定义超时。
看看这个小提琴我跳起来有帮助。