Загрузочный шрифт с виртуальной клавиатурой не работает должным образом

У меня проблема с Typeahead, когда я использую мобильные телефоны и планшеты с виртуальной клавиатурой.

Когда я нажимаю на элемент управления вводом текста (ввод html), появляется виртуальная клавиатура, и я могу ввести текст запроса. Затем в раскрывающемся списке отображаются результаты, и когда я выбираю параметр, виртуальная клавиатура закрывается, а выбранный параметр отображается в элементе управления. Но сразу же снова отображается виртуальная клавиатура, потому что фокус возвращается к элементу управления вводом и снова вызывает событие касания.

Пример на странице Bootstrap имеет такое же поведение.

[РЕДАКТИРОВАТЬ] Пользователь должен выбрать несколько параметров. Когда выбирает первый, я хочу установить фокус в следующем элементе управления параметрами, но ввод текста возвращает фокус самому себе. Я не могу установить фокус сразу после выбора. Это происходит только с Boostrap. Например, автозаполнение jquery работает правильно.

Может кто-нибудь помочь мне?

Спасибо


person Gonzalo    schedule 26.02.2013    source источник
comment
Но не будет ли пользователь просто нажимать «Перейти» на виртуальной клавиатуре, когда он все равно выбрал элемент?   -  person Billy Moat    schedule 26.02.2013
comment
Пользователь должен выбрать несколько параметров. Когда выбирает первый, я хочу установить фокус в следующем элементе управления параметрами, но ввод с опережением возвращает фокус самому себе. Я не могу установить фокус сразу после выбора   -  person Gonzalo    schedule 26.02.2013
comment
Это может быть полезно: gist.github.com/Yavari/1891669   -  person Billy Moat    schedule 26.02.2013


Ответы (1)


В bootstrap-typeahead.js v2.3.0 в Typeahead.prototype функция «Click» после выбора элемента снова устанавливает фокус на «управление вводом». Это не обязательно. Поэтому я удалил эту строку кода, и теперь typeahead отлично работает со всеми браузерами мобильных устройств и планшетов.

...
     , click: function (e) {
          e.stopPropagation()
          e.preventDefault()
          this.select()
          //this.$element.focus() //I removed this line
      }
...
person Gonzalo    schedule 27.02.2013