Javascript 防止typeahead.js下拉列表在选择时关闭

Javascript 防止typeahead.js下拉列表在选择时关闭,javascript,autocomplete,jquery-events,typeahead.js,typeahead,Javascript,Autocomplete,Jquery Events,Typeahead.js,Typeahead,当选择某个项目时,如何防止typeahead下拉列表关闭?我尝试过使用preventDefault如下: $('#q').bind('typeahead:selected',function(obj, datum, name) { ... obj.preventDefault(); }); 但是没有成功 编辑: 我已经通过使用Typeahead_views.js中的第217-218行构建Typeahead来“修复”这个问题:

当选择某个项目时,如何防止typeahead下拉列表关闭?我尝试过使用
preventDefault
如下:

$('#q').bind('typeahead:selected',function(obj, datum, name) {  
            ...
            obj.preventDefault();
        });
但是没有成功

编辑: 我已经通过使用Typeahead_views.js中的第217-218行构建Typeahead来“修复”这个问题:

  byClick && utils.isMsie() ?
       utils.defer(this.dropdownView.close) : this.dropdownView.close();

但是必须有另一种方法不修改源文件?

触发关闭回调上的输入焦点

    $('#typeahead-input').on('typeahead:closed', function(e, d) {
      $('#typeahead-input').focus();
    });

我正在tokenfield内处理typeahead,所以第一部分是访问typeahead.dropdown对象,它本身需要一些搜索

试着玩弄
isOpen
或覆盖
close
函数,最后我得到了最接近的结果。分解事件的编组。您必须重新执行任何值保存等操作,基本上是
Typeahead的前3行。选择

我自己也无法在下拉列表中放置表单(焦点停留在输入字段中),如果要在其中放置一些交互式的内容,还需要更多的搜索。我想我会在这个问题上使用你自己的解决方案,但可能会帮助那些只想阻止结束的人,将原始函数放在一个var中,以便在完成后将其放回原位

$('input[id="test"]').data('bs.tokenfield')
    .$input.data('ttTypeahead').dropdown.trigger = function(e) {};
这也有潜力:

$('input[id="test"]').data('bs.tokenfield')
    .$input.data('ttTypeahead').eventBus.trigger = function(e) {};
更简单的方法是:

     input.data('tt-typeahead')._selectOld = input.data('tt-typeahead')._select
     input.data('tt-typeahead')._select = function(datum) {
       if (false)
         this._selectOld(datum)
     }

有同样的问题,而且(非常简单的)解决方案似乎没有记录在任何地方

$(document).on('typeahead:beforeclose', function(event, data) {
  event.preventDefault()
})

(这只会阻止下拉列表关闭,这在开发过程中非常有用,如果要阻止仅在selet上关闭下拉列表,请使用
'typeahead:beforesect'

我发现这仍然会关闭下拉列表。