bootstrap-typeahead требует 2 нажатия для выбора на ios7

Использование bootstrap-typeahead.js v2.3.2 для автозаполнения в Safari iOS7 требует двойного нажатия, чтобы выбрать элемент из списка. В первый раз он скрывает клавиатуру и помечает опцию как активную, но щелчок не проходит, пока вы не нажмете ее снова.

В других браузерах, телефонах или даже более старых версиях iOS этой проблемы нет.


person Mike Garcia    schedule 02.11.2013    source источник


Ответы (1)


Выяснилось, что нажатие на опцию приводит к «размытию» текстового поля (пока все хорошо), но по какой-то причине (или ошибке) исходное событие щелчка никогда не запускается. Только мышь.

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

Просто добавьте строку с комментарием ниже. Этот фрагмент будет строками 265-269:

, blur: function (e) {
  this.focused = false
  if (!this.mousedover && this.shown) this.hide()
  else if (this.mousedover) this.click(e) // fix ios7 missing click on blur
}

Надеюсь, это поможет кому-то с той же проблемой или другими библиотеками, которые также не получают щелчка после размытия на iOS7.

person Mike Garcia    schedule 02.11.2013