Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.09.2016, 17:35
Кандидат Javascript-наук
Отправить личное сообщение для sergofedor06 Посмотреть профиль Найти все сообщения от sergofedor06
 
Регистрация: 10.11.2015
Сообщений: 131

Блокирование кнопки на 10 секунд после нажатия
Привет!
есть такая форма добавления комментария, добавление происходит без перезагрузки страницы (AJAX)

<form action="#" id="comments_add_form">
ваше имя
<input name="user_name" type="text" id="user_name">
коментарий
<textarea name="comment_text" id="comment_text"></textarea>
<input class="add_comment" value="Добавить коментарий " type="submit"> 
</form>



но появилась проблема, если соеденение с базой быстрое в данный момент то отзыв появляется
на сайте мнгновенно после нажатия на кнопку (Добавить коментарий)
но частенько бывает что нажимая на кнопку (Добавить коментарий) комент не добавляет сразу на сайт
я снова тыкаю по кнопке и коментарий добавляет несколько раз в зависимости сколько
раз нажал на кнопку (Добавить коментарий)
также происходит если посетители добавляют коментарий!


Подскажите пожалуйста решение что-то вроде если посетитель первый раз нажал на кнопку
(Добавить коментарий) то кнопка блокируется на 10 до секунд и все последующие нажатия на нее не учитываются
спасибо большое!

вот сама кнопка
<input class="add_comment" value="Добавить коментарий " type="submit">
Ответить с цитированием
  #2 (permalink)  
Старый 21.09.2016, 17:55
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,172

sergofedor06, AJAX покажи
Ответить с цитированием
  #3 (permalink)  
Старый 21.09.2016, 17:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,895

Сообщение от sergofedor06
добавление происходит без перезагрузки
где код? добавить переменную(флаг) в код поставьте
if(flag) return;
else flag = true; таймер( flag = false , 10000)
Ответить с цитированием
  #4 (permalink)  
Старый 21.09.2016, 18:08
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 444

sergofedor06,
А я набыдлокодил...))) Попробуй потыкать.

1) Надо переменную над обработчиком
var clickTime = null;


2) Условие в обработчике

var currentClickTime;
var $submit = document.getElementById('yourButton');

 if (!clickTime) {
   clickTime = new Date().getTime();
   $submit.setAttribute('disabled', '');
 } else {
     currentClickTime = new Date().getTime();

     if (currentClickTime - clickTime <= 10000) return;
     else {
       $submit.removeAttribute('disabled');
       clickTime = null;
     };
 };
Ответить с цитированием
  #5 (permalink)  
Старый 21.09.2016, 18:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,895

Coriolan161,
а какой смысл кнопку отключать?
Ответить с цитированием
  #6 (permalink)  
Старый 21.09.2016, 19:27
Кандидат Javascript-наук
Отправить личное сообщение для sergofedor06 Посмотреть профиль Найти все сообщения от sergofedor06
 
Регистрация: 10.11.2015
Сообщений: 131

Спасибо!

что мне нужно прописать в yourButton
Сообщение от Coriolan161
var $submit = document.getElementById('yourButton');
исходя из того что кнопка
<input class="add_comment" value="Добавить комментарий " type="submit">


может в кнопке тоже нужно добавить что-то?
Ответить с цитированием
  #7 (permalink)  
Старый 21.09.2016, 19:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,895

sergofedor06,
по классу
var $submit = document.querySelector('.add_comment');


но это разве отменит отправку по enter?
Ответить с цитированием
  #8 (permalink)  
Старый 21.09.2016, 19:42
Кандидат Javascript-наук
Отправить личное сообщение для sergofedor06 Посмотреть профиль Найти все сообщения от sergofedor06
 
Регистрация: 10.11.2015
Сообщений: 131

при нажатии на enter у меня отправка не идет!
Ответить с цитированием
  #9 (permalink)  
Старый 21.09.2016, 19:46
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,172

sergofedor06, так не делается... но тебе пойдет...
Ответить с цитированием
  #10 (permalink)  
Старый 21.09.2016, 19:53
Кандидат Javascript-наук
Отправить личное сообщение для sergofedor06 Посмотреть профиль Найти все сообщения от sergofedor06
 
Регистрация: 10.11.2015
Сообщений: 131

var clickTime = null;




var currentClickTime;
var $submit = document.querySelector('add_comment');

if (!clickTime) {
clickTime = new Date().getTime();
$submit.setAttribute('disabled', '');
} else {
currentClickTime = new Date().getTime();

if (currentClickTime - clickTime <= 20000) return;
else {
$submit.removeAttribute('disabled');
clickTime = null;
};
};




разместил в скрипте, терь при нажатии на кнопку идет перезагрузка страницы! и урл меняется, что то не то
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка для нажатия кнопки hidden liringea Элементы интерфейса 7 09.08.2013 17:38
Как вернуться к месту нажатия ссылки после скроллинга? galva74 jQuery 2 02.05.2012 09:41
Имитация нажатия кнопки ehan jQuery 9 14.12.2011 12:07
Событие hover только после 2 секунд niksan jQuery 7 12.08.2010 13:16
Сохранение результата ajax запроса после нажатия 'back' gregOlsen AJAX и COMET 5 18.11.2009 11:23