Как вызвать Typeahead, используя только Enter / Press? - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть поле поиска автозаполнения ( Bootstrap-3-Typeahead ), которое в настоящее время вызывается всякий раз, когда я использую up/down arrow keys.

Я не уверен почему, но этомой код:

$(function() {
  $("input[data-name='searchField']").typeahead({
    autoSelect: false,
    minLength: 2,
    delay: 0,
    fitToElement: true,
    items: 7,
    source: function(query, result) {
      [source-irrelevant]
    },
    updater:function(item) {
                      $("input[data-name='searchField']").val($(item).text());
                      window.location = item.url;
    }
  });
});
<input type='text' data-name="searchField" id="searchText" class='form-control typeahead' placeholder="Text..." data-provide="typeahead" autocomplete="off" />

Я хочу активировать выделение (window.location) только тогда, когда активирована клавиша Enter / Mouse Left-Click / Touch-pressи использовать клавиши со стрелками для перемещения по меню (в настоящее время я могу перемещаться, если достаточно быстро, хотя он также вызывает window.location)

1 Ответ

0 голосов
/ 22 декабря 2018

Вам необходимо установить для опции changeInputOnMove значение false.

Отредактированный пример:

$(function() {
  var $input = $("input[data-name='searchField']");
  $input.typeahead({
    autoSelect: false,
    minLength: 2,
    delay: 0,
    fitToElement: true,
    items: 7,
    changeInputOnMove: false,
    source: function(query, result) {
      [source-irrelevant]
    },
    updater:function(suggestion) {
        window.location = suggestion.url;
    }
  });
  $input.bind('typeahead:change', function(ev, suggestion) {
    window.location = suggestion.url;
  });
});
...