Я работаю над 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, если пользователь снова нажмет кнопку?
благодаря
Вы можете сохранить ссылку на setTimeout()
var timeout = setTimeout(function() {
delayWindowLoad(data.name);
}, 5000);
Затем вызовите clearTimeout на эту ссылку.
window.clearTimeout(timeout)
;
При каждом вызове события clickTimeout, а затем снова определяйте свой тайм-аут.
Посмотрите на эту скрипку, я прыгаю, это помогает.
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);