5

URLに属性を追加してリモートURLを呼び出そうとしています。

今のところ、これが機能しています:

$('#league').typeahead({
        remote: '/typeahead/get_league?query=%QUERY',
        limit: 10
});

今、私はこのようなことをしたいと思います:

$('#league').typeahead({
        remote: function () {
            var q = '/typeahead/get_league?query=%QUERY';
            if ($('#sport').val())
                q += "&sport=" + encodeURIComponent($('#sport').val());
            return base_url + q;
        },
        limit: 10
});

バックエンドでクエリを絞り込めるように、GET 属性「スポーツ」を URL に追加したいと考えています。上記のコードを試しましたが、JS エラーが発生します。

以前のバージョンの Bootstrap Typeahead では、このタイプのセットアップが可能でした。キーがヒットするたびにリモート URL を更新できるので、非常に便利でした。

このバージョンでそれを機能させる方法はありますか?

4

3 に答える 3

10

remotetypeahead.js専用です(Bootstrap の一部ではありません)。しかし、remote正しく使用していません。関数ではなく、文字列またはオブジェクトのいずれかです。

リクエスト URL を変更する必要がある場合は、次を使用できますreplace

$('#league').typeahead({
    remote: {
        url: '/typeahead/get_league?query=%QUERY',
        replace: function () {
            var q = '/typeahead/get_league?query=%QUERY';
            if ($('#sport').val()) {
                q += "&sport=" + encodeURIComponent($('#sport').val());
            }
            return base_url + q;
        }
    },
    limit: 10
 });

こちらのドキュメントを確認してください

それが役に立てば幸い。

于 2013-08-09T07:40:51.147 に答える
1

以下は、QUERY の結果が渡された完全な例です。リモート メソッドを使用すると、変数置換が機能しなくなることに注意してください。その大部分についてhieu-nguyenに感謝します!

jQuery('#city').typeahead({
    name: "cities",
    remote: {
        url: current_web_root + '?action=ajax|getcities&query=%QUERY',
        replace: function () {
            var q = current_web_root + '?action=ajax|getcities&query=' + jQuery('#city').val();
            if (jQuery('#state').val()) {
                q += "&state=" + encodeURIComponent(jQuery('#state').val());
            }
            return q;
        }
    },      
    cache: false
}); 

jQuery("#state").change(function (e) {
    jQuery('#city').val("");
});
于 2013-09-10T17:22:02.730 に答える