Вы здесь

Убрать блокировку keyword_autocomplete на поиск во время его работы

0

Добрый день!
keyword_autocomplete позволяет сохранять вводимые в поисковую строку фразы и затем при новом вводе предлагать подходящие наиболее популярные варианты фраз.
Но, во время того, как keyword_autocomplete думает (подбирает фразы), на пару секунд блокируется сабмит. Т.е., если я ввел что-то в поиск, либо просто вставил туда что-нибуть через ctrl+v, и сразу нажимаю ентер, или кликаю на кнопку поиска мышью, то ничего не происходит. И пользователь сидит и ждёт, что произойдёт, а ничего не происходит. И приходится либо ещё раз нажать ентер, либо уйти с сайта.
Как убрать эту блокировку поиска?

Версия Drupal: 
6.x
Связанные проекты: 
Keyword Autocomplete
Вопрос задан 20.02.2016 - 08:30

Ответы

1

Кароче, товарищи.
Всё там просто оказалось.
Переопределил одну функцию, и всё заработало как надо. А то раньше ентер скрывал всплывающее окно вместо того, чтобы начинать поиск.

~~~php

Drupal.jsAC.prototype.onkeyup = function (input, e) {
if (!e) {
e = window.event;
}
switch (e.keyCode) {
case 16: // shift
case 17: // ctrl
case 18: // alt
case 20: // caps lock
case 33: // page up
case 34: // page down
case 35: // end
case 36: // home
case 37: // left arrow
case 38: // up arrow
case 39: // right arrow
case 40: // down arrow
return true;

case 9:  // tab
case 27: // esc
  this.hidePopup(e.keyCode);
  return true;

case 13: // enter
  this.input.form.submit();
  return true;

default: // all other keys
  if (input.value.length > 0)
    this.populatePopup();
  else
    this.hidePopup(e.keyCode);
  return true;

}
};
~~~

Ответ дан 24.02.2016 - 19:21

Отлично! А говорили, что вряд ли справитесь :)

Комментарий оставлен 01.03.2016 - 17:13

Ага, а Вы говорили, что часа 2-3 надо :)

Комментарий оставлен 09.03.2016 - 16:10
0

Судя по коду модуля https://www.drupal.org/project/keyword_autocomplete - он использует autocomplete.js из ядра Drupal 6.
Поизучайте misc/autocomplete.js - я не нашел в нем прямой блокировки каких-либо элементов... возможно, вам нужно посмотреть на функцию Drupal.jsAC.prototype.onkeyup (здесь есть какая-то обработка клавиши Enter) и переопределить её в своем кастомном модуле.

Ответ дан 22.02.2016 - 11:46

Спасибо за ответ, но я врятли смогу это сделать сам. Вы сможете мне в этом помочь (не безвозмездно)? Судя по умным словам, которые Вы пишите, Вы быстро с этим справитесь :)

Комментарий оставлен 23.02.2016 - 08:04

Да я-то не против, пишите в скайп, посмотрим.

Комментарий оставлен 23.02.2016 - 18:55