Как сделать так, чтобы ввод не терял фокус при нажатии на полосу прокрутки в списке предложений - PullRequest
2 голосов
/ 25 февраля 2010

Я тестирую TagDragon Плагин jQuery, это именно то, что мне нужно, но у него есть одна раздражающая «особенность», когда я нажимаю на полосу прокрутки в списке предложений, он скрывает свои результаты. С другой стороны, плагин jQuery autocomplete не теряет фокус на поле ввода и поэтому не скрывает свои результаты. Но этот плагин не обеспечивает нужную мне функциональность, поэтому я не могу просто заменить tagdragon. Я изучил код автозаполнения jQuery, и я не могу понять, как они фокусируются на поле ввода, я просто не могу найти код, ответственный за это!

Итак, вопрос дня таков: как сохранить фокус на вводе при использовании полосы прокрутки в списке подсказок результатов?

P.S. Также у меня есть вопрос о том, как плагин jQuery для автозаполнения делает это, потому что он выглядит как волшебство после изучения кода в течение часа.

1 Ответ

2 голосов
/ 27 сентября 2012

Я только что задал похожий вопрос, и никто не ответил на него, поэтому я в основном настраивал свой собственный код, пока не нашел рабочее решение.

После изучения некоторых других сборщиков я понял, что хитрость заключается не в том, чтобы добавить событие, закрывающее список при размытии, а в имитации события размытия путем проверки других возможностей, выполнив следующее:

  1. после открытия списка добавьте событие клика в документ, который проверяет, не включен ли щелчок в активном входе и не активный список. Если это правда, и клик на самом деле не в списке часть документа, затем закройте его.
  2. добавить событие к каждому элементу списка в списке предложений (если список только открытый), который выбирает значение и закрывает список.
  3. добавить событие keydown к самому вводу, чтобы, если пользователь нажал Enter, он изменяет значение и закрывает список.
...