5

アイテムが選択されているときにタイプオーバーのドロップダウンが閉じないようにするにはどうすればよいですか?私はこのようにpreventDefaultを試してみました:typeahead.jsドロップダウンが閉じるのを防ぐselect

$('#q').bind('typeahead:selected',function(obj, datum, name) { 
      ... 
      obj.preventDefault(); 
     }); 

しかし成功しません。

編集

: 私はtypeahead_views.jsからコメント行217から218と、先行入力された文字を構築することによって、これを「修正」するために管理してきました:

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

しかし、ソースファイルを変更することなく、別の方法が存在しなければなりませんか?

答えて

0

クローズドコールバックの入力のフォーカスをトリガーします。

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

これはまだドロップダウンを閉じることがわかります。 –

0

最初の部分は、それ自体でいくつかの狩猟を取っTypeahead.dropdownオブジェクトにアクセスする私ですので、私はtokenfield内部の先行入力に取り組んでいます。

isOpenでおもちゃを試してみたり、closeの機能を上書きしようとすると、最後に私が得たのがこれでした。イベントのマーシャリングを中断する基本的に最初の3行のTypeahead.selectの値の保存などは、再実装する必要があります。

私はフォームを(入力フィールドにフォーカスが置かれている)ドロップダウンに置くことができず、インタラクティブなものをインタラクティブに配置することができればさらに狩りができました。これについてはロール・オン・ザ独自の解決策を考えてみましょうが、クローズをブロックしたい人を助けるかもしれないし、元の関数を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) {}; 
0

簡単な方法:

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

は同じ問題を抱えていたし、(非常に簡単)解決策はどこに文書化されていないようです

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

(これにより、dr開発中に非常に役立つ可能性のある締め切りからの締め切りは、ちょうどseletを閉じるのを防ぐために'typeahead:beforeselect'を使用してください)。

関連する問題