Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   реализовать блокировку кнопки на определенное время после клика (https://javascript.ru/forum/dom-window/70253-realizovat-blokirovku-knopki-na-opredelennoe-vremya-posle-klika.html)

sanya300 22.08.2017 18:17

реализовать блокировку кнопки на определенное время после клика
 
Подскажите, пожалуйста, как реализовать блокировку кнопки на определенное время после клика. Т.е., пользователь зашел на страницу, нажал на кнопку, информация ушла, а кнопка заблокировалась, на часов 20-ть. И перезагрузка страницы не снимала бы блокировку. Код кнопки <input type="submit" name="submit" class="button-normal active-gradient light-color dark-gradient-hover" value="{$L['change']}" id="submit" />
Заранее благодарен!

j0hnik 22.08.2017 18:25

Один нажимает и у всех на 20 часов она блокируется?

j0hnik 22.08.2017 18:41

регистрация на сайте есть?

laimas 22.08.2017 18:47

Цитата:

Сообщение от sanya300
как реализовать блокировку кнопки на определенное время после клика

Сервер должен отвергать последующий прием, а по уму так вообще не выводить форму в течении этого времени.

sanya300 22.08.2017 19:04

дополню регистрация есть. кнопка
 
регистрация есть. кнопка расположена на странице редактирования объявления зарегистрированного пользователя и отправляет соответствующую форму. доска объявлений абсолютно бесплатная. но в ней не было реализована возможность поднятия объявлений самим пользователем. по просьбам трудящихся прикрутил возможность поднятия объявлений путем клика по кнопке редактирования. но начались злоупотребления. поэтому решил ограничить возможность поднятия временем. а вот как реализовать не знаю. неделю по форумам, но пока никак.

laimas 22.08.2017 19:14

sanya300,
В чем проблемы то? Во время T на сайте N пользователей, регистрированные они или нет не важно, коли всем блокировка. В момент времени Tₓ пользователь Nₓ отправляет форму. Это время пишется в базу. Любой последующий запрос формы, это проверка времени Tₓ + 20 часов, если не истекло, то прием отвергается.
Блокировать же кнопки сразу всем нельзя, можно только по запросу клиента, если Ajax, то по асинхронному запросу.

Rise 22.08.2017 19:26

sanya300,
состояние сохранять в базу к соответствующему объявлению, остальные средства cookie, storage и тд можно обойти.

sanya300 22.08.2017 19:32

всем пользователям кнопки блокировать и не нужно. нужно заблокировать конкретную кнопку, расположенную на странице редактирования конкретного объявления зарегистрированного пользователя. Чтобы было так, пользователь зашел в свой кабинет, затем перешел на страницу одного из объявлений, жмакнул изменить, изменения сохранились, объявление поднялось, а редиректом пользователя перекинуло на страницу с самим объявлением (редирект есть). Если же пользователь вернется на страницу с редактированием того же объявления, то кнопка будет заблокирована. В тоже время другие свои объявления поднять и отредактировать он сможет, но только по одному разу. В теории вроде как понятно, но как сделать кодом...

laimas 22.08.2017 19:36

Цитата:

Сообщение от sanya300
всем пользователям кнопки блокировать и не нужно.

Пишите время запроса для каждого пользователя (может я устал или провел не так, что-то "все" в уме держалось). С этим проблем нет? Сервер проверяя данное в базе может решить о кнопке/форме?

По большому счету в данном случае клиент боком с его JS, все должен решать сервер.

Rise 22.08.2017 19:38

sanya300,
Значит берете время изменения объявления (оно ведь меняется как я понимаю за счет чего и подымается) и текущее время и считаете разницу. Но если пользователь захочет действительно изменить объявление, то не хорошо его ограничивать в данном случае.


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