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


Автор: liliputochka 30.3.2010, 10:11
Всем привет!
 Я полный ноль в javascript. У меня задача такая:
на страницу вывести время и начать обратный отсчет времени. При окончании времени нужно сгенерировать нажатие кнопки submit.

Я бы не раздумывая начала изучать мануалы этого языка, но у меня нет времени - начальник требует сдачу проекта сегодня-завтра.
Помогите пожалуйста!!!

Автор: skyboy 30.3.2010, 10:29
отправка формы через указанное время:
Код

setTimeout(function() {document.getElementById("<id формы>").submit();}, <время в милисекундах>);

часы для обратного отсчета поискай в интернетах - библиотека не должна быть сложной, но все же неохота писать с нуля то, что наверняка уже реализовано. т.о. отсчет времени на часах и отправка формы будут независимы друг от друга.
и ещё: если отправка происходит не в локальной сети, то ничего не помешает посетителю нажать на "стоп" и отменить отправку. или повторить отправку. или вообще отключить javascript.
потому, если к примеру, у тебя какое-то тестирование, критичное к обманщикам, лучше дополнить проверкой на стороне сервера.

Автор: liliputochka 30.3.2010, 11:14
Спасибо за совет и за код!

Вы как в воду глядели - у меня как раз тест! Как реализовать 
Цитата(skyboy @  30.3.2010,  10:29 Найти цитируемый пост)
проверкой на стороне сервера.
 ?

Автор: bars80080 30.3.2010, 14:05
просто ввести сессию, в которой записать для данного пользователя время загрузки страницы, а затем при обработке сравнить с текущим. если больше чем нужно, то ошибку: "вы думали слишком много"

конкретная реализация зависит от серверного языка

Автор: skyboy 30.3.2010, 14:31
...однако, есть вопрос о скорости передачи: если медленное соединение, то может получиться, что человек думал 5 секунд, но данные ещё 5 секунд передавались...

Автор: bars80080 30.3.2010, 20:04
тогда лучше делать на флеше

Автор: skyboy 30.3.2010, 20:08
ну, я думаю, все зависит от порядка таймаута. если 10 и более секунд на вопрос - то можно просто отсчитывать на клиенте 10 секунд, а на стороне сервера допускать до 11 секунд времени на ответ.
а если 1-2 секунды, то такое есть смысл реализовывать только в локальной сети.

Автор: liliputochka 31.3.2010, 12:51
Большое вам ВСЕМ спасибо за помощь!!!

Добавлено через 14 минут и 40 секунд
Может кто-нибудь еще подскажет:

я выбираю из базы время ( время в базе храниться в формате ЧЧ:ММ:СС ). При выборке использую php, соответственно переменная содержащая время php-шная. Как мне передать время в javascript?

Автор: bars80080 31.3.2010, 15:04
Код

var t = '<?php echo $time; ?>'; // ЧЧ:ММ:СС
var t1 = t.split(':');
var date = new Date();
date.setHours(t1[0]);
date.setMinutes(t1[1]);
date.setSeconds(t1[2]);

Автор: liliputochka 4.4.2010, 16:51
Благодарю bars80080!

С праздником вас!!!

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