Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Блокировние кнопки после нажатия на 10мин. (https://javascript.ru/forum/events/53187-blokirovnie-knopki-posle-nazhatiya-na-10min.html)

alerzo 24.01.2015 13:09

Блокировние кнопки после нажатия на 10мин.
 
Здравствуйте! Стоит задача реализовать такую схему:
На сайте делается обычная кнопка, при нажатии на которую она становится неактивной на 10 минут. (на кнопке идет обратный таймер, после которого она вновь становится активной).

При нажатии на кнопку необходимо каким то образом выполнить переход на другой скрипт (страница при этом не должна меняться, сайт открывается этот же, переход на обычный php скрипт) грубо говоря идет запрос на скрипт, который занимается постановкой задач..подскажите как реализовать простейший пример..может кто то примеры видел.:)

alerzo 24.01.2015 14:04

Вот что я пытался реализовать: http://learn.javascript.ru/play/sLeMjc

нужно сделать чтобы таймер продолжал работать в своем режиме после обновления страницы и после его отчета (если страницу юзер не закрыл) таймер вновь вставл на нужное время и ничего не считал пока не нажмут кнопку.. Сразу после нажатия на кнопку "обновить статистику" нужно как то скрыто запускать нужный скрипт

В данный момент скрипт обновляет страниц и идет сброс..нужно подключать куки - как не знаю..прошу помощи
<script>
  function simple_timer(sec, block, direction) {
    var time = sec;
    direction = direction || false;

    var hour = parseInt(time / 3600);
    if (hour < 1) hour = 0;
    time = parseInt(time - hour * 3600);
    if (hour < 10) hour = '0' + hour;

    var minutes = parseInt(time / 60);
    if (minutes < 1) minutes = 0;
    time = parseInt(time - minutes * 60);
    if (minutes < 10) minutes = '0' + minutes;

    var seconds = time;
    if (seconds < 10) seconds = '0' + seconds;

    block.innerHTML = hour + ':' + minutes + ':' + seconds;

    if (direction) {
      sec++;

      setTimeout(function () {
        simple_timer(sec, block, direction);
      }, 1000);
    } else {
      sec--;

      if (sec > 0) {
        
        setTimeout(function () {
          simple_timer(sec, block, direction);
        }, 1000);
      } else {
        alert('Время вышло! сделали кнопку активной, вернули таймер');
        document.getElementById("knopka").disabled = false; 
        
      }
    }
  }

  function start_countdown() {
    document.getElementById("knopka").disabled = true;
    location.reload();
    alert('Статистика обновлена');
    var block = document.getElementById('online');
    simple_timer(10, block);
  }
</script>
Статистику можно обновить через: <span id="online">00:10:00</span> сек.


<input type="button" id="knopka" value="Обновить статистику" onclick="start_countdown()" />

danik.js 24.01.2015 15:48

alerzo, решение должно быть устойчиво к "взлому"? Допустим если юзер откроет консоль и из нее запустит нужную функцию - это допустимо? То есть в таком случае негативные последствия будут для тебя или для юзера (сам дурак если так сделает)? Или их вообще не будет?

alerzo 24.01.2015 16:10

Обновление статистики происходит при переходе на скрипт..ничего более юзер сделать не сможет..кроме как "обдурить" кнопку и снять лимит..но это не является обязательным..

danik.js 24.01.2015 17:19

Вместо кук сначала сделай на localStorage - пиши туда время старта таймера. При обновлении страницы - читай его оттуда и продолжай отсчет (за вычетом уже пройденного времени) или че там у тебя.

Запуск скрипта php - дергай его через XMLHttpRequest (гугли если не знаешь че это)

alerzo 26.01.2015 19:47

Требуется помощь! Не разобрался как сделать

danik.js 26.01.2015 20:17

Показывай че есть.

alerzo 27.01.2015 18:02

все что есть вверху..необходимо чтобы нажималась кнопка "обновить статистику" после этого на кнопке был таймер обратного отчета и кнопка была неактивной -в этот момент и был запрос к скрипту..(после истечения времени кнопка вновь становилась активной и с начальным временем таймера

danik.js 27.01.2015 19:09

Ок, с чем именно возникли проблемы?

alerzo 27.01.2015 19:38

с завершением:) собственно плохо разбираюсь во всем этом.


Часовой пояс GMT +3, время: 15:50.