Intereting Posts
возвышенный текст 2, подчеркивающий, как netbeans Ошибка подключения MySQLI Laravel 5, ajax, 500 Internal Server Error, TokenMismatchException в строке VerifyCsrfToken.php 46: PHP PDO bindParam падал в foreach Обновление базы данных mysql с помощью php обновить div для извлечения информации из базы данных без обновления всей страницы php-массив из mysql Не удалось подключиться к внешней базе данных SSL Postgres с Debian (ошибки разрешения сертификата) Заполнение формы HTML с помощью сеанса Zend Framework Обслуживание загрузки файла с использованием PHP Иерархический запрос в MySQL II PHP-цикл: добавьте div вокруг каждого трех элементов синтаксиса Выйдите из всех открытых вкладок автоматически, когда пользователь выходит на одну из открытых вкладок в php Magento настраивает результат поиска каталогов html Как вы повторяете текущие свойства класса (не унаследованные от родительского или абстрактного класса)?

Автоматическая отправка формы с использованием таймера

Я написал следующий код. С помощью этого кода нажатие кнопки «Отправить» представляет форму вручную. У меня есть также таймер, который я хочу автоматически отправить форму через 10 секунд. Но это не работает. Он подсчитывается до 0, а затем ничего не делает. Не могли бы вы рассказать мне, что мне не хватает или как изменить мой таймер (если есть, это проблема)? Но я хочу, чтобы пользователь смотрел таймер в качестве примера

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript"> function countDown(secs,elem) { var element = document.getElementById(elem); element.innerHTML = "<h2>You have <b>"+secs+"</b> seconds to answer the questions</h2>"; if(secs < 1){ clearTimeout(timer); document.getElementById('myquiz').submit(); } secs--; var timer = setTimeout ('countDown('+secs+',"'+elem+'")',1500); } </script> <div id="status"></div> <script type="text/javascript">countDown(5,"status");</script> <title>Questionnaire</title> <style type="text/css"> span {color: #FF00CC} </style> </head> <body> <h1>Please complete the following Survey</h1> <form name="quiz" id ="myquiz" method="post" action="includes/process.php"> First Name: <input type="text" name="firstname" id="fname"/> <p></p> Last Name: <input type="text" name="lastname" id="lname"/> <p></p> <input type="submit" name="submit" value="Go"></input> <input type="reset" value="clear all"></input> </form> </body> </html> 

Solutions Collecting From Web of "Автоматическая отправка формы с использованием таймера"

Не делайте этого:

 var timer = setTimeout ('countDown('+secs+',"'+elem+'")',1500); 

в countDown . Каждые 1500 вы снова вызываете countDown .

Поместите это в нижней части страницы (перед закрытием тега body )

 <script type="text/javascript"> secs = 10; timer = setInterval(function () { var element = document.getElementById("status"); element.innerHTML = "<h2>You have <b>"+secs+"</b> seconds to answer the questions</h2>"; if(secs < 1){ clearInterval(timer); document.getElementById('myquiz').submit(); } secs--; }, 1000) 

Btw: где объявляется validate() ?

Не проверял, но должен делать трюк.

Существует три ошибки, вызывающих эту ошибку.

  • У вас есть опечатка в атрибутах формы. есть пробел после id . Он должен быть id="myquiz" .
  • У вашей формы есть кнопка с именем «submit», что неверно. Он переопределяет функцию. Назовите его «submitbutton» или что-то другое.
  • Метод «validate» не определен. Он должен вернуться к истине.

Кстати, таймаут имеет неправильное время, он должен быть 1000.

Рабочий пример: plunk

Вы должны представить форму, а не элемент, поэтому попробуйте следующее:

 document.forms["quiz"].submit(); 

ИЛИ если это единственная форма, которую вы можете использовать

 document.forms[0].submit(); 

Этот Кодекс будет работать:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript"> function countDown(secs, elem) { var element = document.getElementById(elem); element.innerHTML = "<h2>You have <b>"+secs+"</b> seconds to answer the questions</h2>"; if(secs < 1) { document.quiz.submit(); } else { secs--; setTimeout('countDown('+secs+',"'+elem+'")',1500); } } function validate() { return true; } </script> <div id="status"></div> <script type="text/javascript">countDown(5,"status");</script> <title>Questionnaire</title> <style type="text/css"> span { color: #FF00CC; } </style> </head> <body> <h1>Please complete the following Survey</h1> <form name="quiz" id="myquiz" onsubmit="return validate()" method="post" action="includes/process.php"> First Name: <input type="text" name="firstname" id="fname"/> <p></p> Last Name: <input type="text" name="lastname" id="lname"/> <p></p> <input type="submit" name="submitbutton" value="Go"></input> <input type="reset" value="clear all"></input> </form> </body> </html> 

определить функцию wait as

 function caller() { setInterval(submit_now, 10000); } function submit_now() { document.forms["quiz"].submit(); } 

Explaination:

1). Функция wait() будет устанавливать интервал времени в 10 секунд (10000) мс до того, как он submit_now() функцию submit_now() .

2). С другой стороны submit_now() отправляет ваши данные формы, когда выполняется вызов этой функции.