@playwithbrain

Как сделать Timeout между событием в addEventListener?

Доброго времени суток.
Есть строка поиска пользователей на сайте. Повешал я ей addEventListener чтобы на нажите клавиш срабатывало :) Но слишком много запросов идет. Собственно вопрос... Как сделать так чтобы в строке пользователь написал например имя и скрипт понял что пользователь дальше ничего писать не будет и вывел результат.

Скрипт JS:
function addEvent(elem, types, handler) {
  elem = geId(elem);
  each(types.split(/\s+/), function(index, type){
    elem.addEventListener(type, handler);
  });
}
var Search = {
  init: function(e) {
    var q = geId("search_query");
    if(!this.inited){
      var t = this;
      this.inited = !0, this.input = q, this.cont = q.parentNode.parentNode;
      
      addEvent(q, "keyup click mouseup", function() {
          var t = val(q);
          var currentTimeOut = 468;
          setTimeout(function(){
            ajax.post("/index.php?subact=users&act=search_hints", {
              q: t
            }, {
              onDone: function(e) {
                var response = parseJSON(e);
                console.log(response);
              }
            })
          },900);
      });
    }
  }
},
  • Вопрос задан
  • 668 просмотров
Решения вопроса 1
profesor08
@profesor08 Куратор тега JavaScript
После ввода вам надо инициировать таймер, например в 1 секунду, если за это время происходит ввод, то таймер сбрасывать и создавать новый. Если за отведенное время ввода нет, то делать запрос.

Пример: https://jsfiddle.net/L5kjt7L3/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 01:35
5000 руб./за проект
24 нояб. 2024, в 01:24
500 руб./за проект
24 нояб. 2024, в 00:04
5000 руб./за проект