Форма отправки - это всегда запрос к серверу. Вы можете использовать ajax для отправки формы или просто посчитать и отправить форму позже.
Чтобы запретить отправку формы, когда пользователь нажимает кнопку, вы можете запретить поведение по умолчанию, например:
$('input [type=submit]').on('click', function( event ) {
event.preventDefault();
// use your counter here
// when counter hits 0 just submit the form with
$('form').submit();
});
или используйте вызов ajax:
$('form').on('submit', function(event) {
event.preventDefault();
$.ajax({
url: 'url/to/form/action',
data: $(this).serialize(),
method: "POST",
success: function() {
// start your counter
// REDIRECT
}
});
});
Проблема с первым методом заключается в том, что вы просто откладываете отправку формы.
Во втором случае вы не можете с уверенностью сказать, когда вы получите успешный (или ошибочный) ответ, поскольку вызов асинхронный. Это приведет либо к задержке до запуска вашего счетчика, либо к возможной задержке после его окончания, если сервер до этого не отвечал.