Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как сделать задержку отправки формы на javascript?


Автор: Akimsir 10.1.2011, 10:26
Добрый день. Не работают таймеры:

Код

<script type="text/javascript">
function checkForm()
{
              return_value = true;
 
                      if() // какое-то условие
               {
                   return_value = false;
               }
 
               if (return_value==true)  
               {
window.setTimeout(thanks,3000);    // Почему-то форма отправляется сразу, а не ждёт окончания работы таймеров. страница сразу обновляется
window.setTimeout(ishod,13000);
             }  
               
           return return_value;
}
</script>


Код

<form onsubmit="return checkForm()">
...
</form>


Как сделать задержку отправки формы???? Уже второй день бьюсь. 

Автор: Amphiluke 10.1.2011, 12:18
Потому что в вашем случае функция checkForm всегда должна возвращать false. И лишь потом, внутри той ф-ции, на выполнение которой установлен таймер, нужно программно отправлять форму при помощи ее метода submit().

Автор: Akimsir 10.1.2011, 13:45
Спасибо за ответ. Я сделал так, упростил всё.

Код

<form name="forma" action="" method="get" onSubmit="gosend(); return false"> // в событии onSubmit я вызываю функцию и отменяю отправку.
<input class="btn" name="submit" onClick="" value="" type="submit">
</form>



Тепер в функции gosend() хочу отправить форму с задержкой в 2 секнды:

Код

    function gosend() {
         
        setTimeout(function(){document.forma.submit();},2000);
         
    }

Но ничего не присходит. А вот если посылать без таймера т. е. вот так:

    function gosend() {
         
        document.forma.submit();
         
    }


то форма отправляется, только, соответственно без задержки. В чём проблема не пойму....

Автор: Amphiluke 10.1.2011, 15:49
Ваша ошибка в том, что вы дали кнопке submit свойство name="submit", т.е. одноименное с методом submit(). Поэтому код document.forma.submit() генерирует ошибку что submit — это не функция. Решение — переименовать кнопку submit, например,
Код

<input class="btn" name="sbmt" onClick="" value="" type="submit">

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)