как предотвратить событие одиночного щелчка при двойном щелчке в dhtmlx - PullRequest
0 голосов
/ 12 января 2020

У меня есть привязка к событиям onTaskClick и onTaskDblClick. Когда я дважды щелкаю, он также запускает событие onTaskClick. Как я могу предотвратить это?

1 Ответ

1 голос
/ 14 января 2020

Это может быть нетривиальным, потому что дело в том, что когда срабатывает первое событие onTaskClick, нет никакого способа определить, закончил ли пользователь щелчок мышью или он собирается сделать еще один щелчок, который затем вызовет двойной щелчок событие. Поэтому, если вы захватываете события в браузере, двойной щелчок всегда будет выглядеть как последовательность «щелчок» - «щелчок» - «двойной щелчок».

Так что, если вам нужно, чтобы щелчок не срабатывал при двойных щелчках, может потребоваться некоторое время ожидания в обработчике onclick, чтобы проверить, следует ли следующий щелчок / двойной щелчок (200-300 мс, точное значение может варьироваться в зависимости от браузера и ОС). Таким образом, когда пользователь делает один щелчок, обработчик onclick будет выполнен после некоторой задержки, а если это двойной щелчок - тайм-аут для обработчика щелчка будет сброшен, поэтому будет работать только обработчик onTaskDblClick.

var a;
gantt.attachEvent("onTaskClick", function(id,e){
  setTimeout(function() {
    if (a) {
      return false;
    } else {
      gantt.message("onTaskClick")
      return true;
    }
  }, 200)
  a = 0;
});


gantt.attachEvent("onTaskDblClick", function(id,e){
    gantt.message("onTaskDblClick")
    a=1;
    return true;
});

Пожалуйста, отметьте этот фрагмент , который демонстрирует, как он работает.

...