Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2011, 10:04
Интересующийся
Отправить личное сообщение для Akimserg Посмотреть профиль Найти все сообщения от Akimserg
 
Регистрация: 21.10.2010
Сообщений: 18

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

<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>

Как сделать задержку отправки формы???? Уже второй день бьюсь.
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2011, 10:23
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

Akimserg, setTimeout не останавливает полностью скрипт, просто код после него дальше проходит сразу же, а после пройденного времени уже срабатывает скрипт.
Ответить с цитированием
  #3 (permalink)  
Старый 10.01.2011, 10:54
Интересующийся
Отправить личное сообщение для Akimserg Посмотреть профиль Найти все сообщения от Akimserg
 
Регистрация: 21.10.2010
Сообщений: 18

ага понятно, это разъясняет ситуацию. Только я всё равно не пойму, как сделать задержку.
Ответить с цитированием
  #4 (permalink)  
Старый 10.01.2011, 11:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Отменить отправку формы, потом отправить её самостоятельно в нужное время.
Ответить с цитированием
  #5 (permalink)  
Старый 10.01.2011, 13:13
Интересующийся
Отправить личное сообщение для Akimserg Посмотреть профиль Найти все сообщения от Akimserg
 
Регистрация: 21.10.2010
Сообщений: 18

Kolyaj,
Я воспользовался вашим советом:
<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();
	
}

то форма отправляется, только, соответственно без задержки. В чём проблема не пойму....
Ответить с цитированием
  #6 (permalink)  
Старый 10.01.2011, 13:20
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Потому что при вызове метода submit срабатывает событие submit, которое вы отменяете. Выставляйте где-нибудь флаг, чтобы в обработчике знать, отменять событие или нет.
Ответить с цитированием
  #7 (permalink)  
Старый 10.01.2011, 13:47
Интересующийся
Отправить личное сообщение для Akimserg Посмотреть профиль Найти все сообщения от Akimserg
 
Регистрация: 21.10.2010
Сообщений: 18

решил проблему так:
<form id="myForm" name="forma" action="" method="get" onSubmit=""> //обработчиком onSubmit не стал пользоваться 
....
<input class="btn"  onClick="checkForm()" value="" type="button"> //Вызвал функцию через onClick
</form>


А в функции:
function checkForm()
{


setTimeout('document.forma.submit()',6000); //задерка

}

Спасибо за внимание))))
Ответить с цитированием
  #8 (permalink)  
Старый 10.01.2011, 13:58
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Форму можно отправить не только кликом по кнопке, так что плохой вариант.
Ответить с цитированием
  #9 (permalink)  
Старый 10.01.2011, 15:06
Интересующийся
Отправить личное сообщение для Akimserg Посмотреть профиль Найти все сообщения от Akimserg
 
Регистрация: 21.10.2010
Сообщений: 18

Не понял. Что плохого в этом варианте?
Ответить с цитированием
  #10 (permalink)  
Старый 10.01.2011, 15:45
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Сообщение от Akimserg
<input class="btn" name="submit" onClick="" value="" type="submit">
Akimserg, никогда не именуйте элементы формы именем типа "submit", поскольку это имя совпадает с названием метода submit() формы. Когда вы попытаетесь вызвать метод submit(), вам в консоль вывалится ошибка о том, что submit — это не функция (а имя элемента формы). И соответственно, ничего не будет работать, как сейчас.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать что б не подтормаживало. Сергей Постовит jQuery 3 19.05.2010 12:07
Как сделать вкладку с 'плюсами и минусами'??? Monopolist Элементы интерфейса 2 05.08.2009 14:07
Многостраничная галерея на lightbox.js Как сделать? MASTER Общие вопросы Javascript 9 24.07.2009 14:38
Вопрос как сделать эту панельку Определённых размеров и свойств. jei jQuery 3 09.06.2009 19:14
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24