Попробуйте что-то подобное:
//countdown pause timer
var countDownPauseTimer = 0;
//monitors user action
$('.warning, .confirmation').hide();
$(document).bind('mousemove keydown', function() {
countDownPauseTimer = 10; // Countdown will pause for 10 seconds
$('.warning').show().delay(2000).fadeOut(500);
});
//counts for example from 5 seconds (this value is in the <span></span> in html section)
var sec = $('#box span').text()
var timer = setInterval(function() {
if (countDownPauseTimer > 0)
countDownPauseTimer--;
else
$('#box span').text(--sec);
if (sec == 0) {
$('.confirmation').show(function() {
$(document).unbind();
});
clearInterval(timer);
}
}, 1000);
Здесь я ввел еще одну переменную, которая указывает, что мы приостанавливаем обратный отсчет, и содержит количество секунд, оставшихся до паузы.
В интервальном тике я проверяю, есть ли пауза, и решаю, какое значение уменьшить ...
Я не проверял это, но оно должно работать.
Обновление
Ниже приведен обновленный код с возобновлением обратного отсчета после окончания паузы:
//countdown pause timer
var countDownPauseTimer = -1;
//monitors user action
$('.warning, .confirmation').hide();
$(document).bind('mousemove keydown', function() {
countDownPauseTimer = 10; // Countdown will pause for 10 seconds
$('.warning').show().delay(2000).fadeOut(500);
});
//counts for example from 5 seconds (this value is in the <span></span> in html section)
var sec = $('#box span').text();
var timer = setInterval(function() {
if (countDownPauseTimer > 0)
countDownPauseTimer--;
else if (countDownPauseTimer == 0) {
countDownPauseTimer--;
sec = $('#box span').text();
}
else
$('#box span').text(--sec);
if (sec == 0) {
$('.confirmation').show(function() {
$(document).unbind();
});
clearInterval(timer);
}
}, 1000);