如何仅使用Enter / press触发提前输入?

时间:2018-12-21 20:49:05

标签: javascript jquery html bootstrap-4 bootstrap-typeahead

我有一个自动完成搜索字段(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" />

我仅在激活Enter键/鼠标左键单击/触按时才触发选择(window.location),并使用箭头键浏览菜单(我目前可以导航得足够快,但是它也会触发window.location)

1 个答案:

答案 0 :(得分:0)

您需要将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;
  });
});