Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2018, 11:29
Аватар для finlolo
Аспирант
Отправить личное сообщение для finlolo Посмотреть профиль Найти все сообщения от finlolo
 
Регистрация: 12.08.2018
Сообщений: 61

Как предотвратить двойное нажатие на элемент.
Всем привет.

Есть кнопки и разные блоки, при нажатии на которые, происходит вызов функции. Например так:

Код:
var fin = document.querySelector('#infinish');
        fin.onmouseup= function()  {
        reversShow();
}
Или так:
Код:
var fin = document.querySelector('#infinish');
        fin.onclick= function()  {
        reversShow();
}
Не всегда срабатывает на мобиле простой онклик, поэтому делал по mouseup. Но, если успеть кликнуть 2 раза по блоку или кнопке, функция вызовется два раза, что приводит к траблу. Трабл такой: есть анимация, если нажать два раза она появляется два раза.
Как этого избежать?
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2018, 15:01
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Повторный клик срабатывает не чаще, чем через 2 секунды
<button id="infinish">Finish</button>
<script>
var flag = true;
var fin = document.querySelector('#infinish');
        fin.onmouseup= function()  {
           if(flag) reversShow();
           flag = false;
}
function reversShow() {
      console.log('Start'); //запуск анимации
      setTimeout('flag = true;',2000);

}
</script>

Последний раз редактировалось Dilettante_Pro, 05.09.2018 в 15:09.
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2018, 15:09
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Или еще радикальней
<button id="infinish">Finish</button>
<script>

var fin = document.querySelector('#infinish');
        fin.onmouseup= function()  {
           reversShow();
           this.style.display='none';
}
function reversShow() {
      console.log('Start'); //запуск анимации
      setTimeout('fin.style.display="block";',2000);

}
</script>
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти нужный элемент страницы и кликнуть если он имеет тока класс... Александр_1997 Events/DOM/Window 3 18.01.2014 14:34
как удалить элемент в DOM? czp Общие вопросы Javascript 11 17.12.2011 20:55
имея this как удалить элемент из тела html clgs Общие вопросы Javascript 1 13.05.2009 17:55
как отделить нажатие символьных клавиш от функциональных? Kos Events/DOM/Window 50 03.10.2008 12:08
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11