JQuery установка тайм-аута перед загрузкой окна

0

Я работаю над 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, если пользователь снова нажмет кнопку?

благодаря

Теги:
spring-mvc

2 ответа

-1
Лучший ответ

Вы можете сохранить ссылку на setTimeout()

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

Затем вызовите clearTimeout на эту ссылку.

window.clearTimeout(timeout);

При каждом вызове события clickTimeout, а затем снова определяйте свой тайм-аут.

Посмотрите на эту скрипку, я прыгаю, это помогает.

jsFiddle

  • 0
    Спасибо, Эдуардо, это именно то, что я искал. Будучи еще новичком в jquery, я не думал, что это так просто.
  • 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);
  • 0
    Извините, что не выбрал ваш ответ, я просто заметил, что хотя вы ответили перед Эдуардо, вы ответили перед ним. если бы я мог дать это каждому из вас.
  • 0
    И пример кода, размещенный в этом ответе, был бы неправильным, если бы вы использовали var как предложено.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню