3

Twitter Bootstrapの先行入力機能が大好きですが、やりたいことが少しあります。入力ボックスのドロップダウンが自動入力されるように、最適な一致(または最初の一致の方がおそらく簡単)を取得したいと考えています。

私が探している機能は、まさにGoogleChromeOmniboxの動作方法です。

スクリーンショット

誰かがこれの解決策を知っていますか?

4

1 に答える 1

5

少し遊んで、私はそのコードを思いつきます。

ライブデモ(jsfiddle)

$('.omnitype').each(function() {
    var $omnitype = $(this);
    $omnitype.typeahead({
        source: mySource,
        items: 4,
        sorter: function(items) {
            // Bootstrap code
            /* ... */
            // Modified code (delay the return of sorted)
            var sorted = beginswith.concat(caseSensitive, caseInsensitive);

            // if there is a first element, we fill the input select what we added
            var first = sorted.length && sorted[0];
            if (first) {
                var origin = this.$element.val();
                this.$element.val(first);
                createSelection(this.$element.get(0), origin.length, first.length);
            }

            // back to the intended behavior
            return sorted;
        }
    });
});

私はこの回答を使用して機能を提供しましたcreateSelection(本当に必要かどうかはわかりません)。

キーが期待どおりに機能しないため、まだかなりの調整が必要です。直感的な動作を自然に与えるいくつかのチェックを使用して、プラグイン全体を再コーディングする方が簡単な場合があります。

または、プラグインの前に主要なイベントをキャッチして、適切なことを実行できる場合があります。

于 2012-07-27T00:05:57.403 に答える