0

twitter の typeahead の例を探しています。

関数でデータを取得したいのですが、リモートを使うべきですか?サーバーから返されるデータは、Json (単なる配列ではありません) になります。それらから、フィールドなどのみを表示したいname

正しいものを選択したら、そのオブジェクトの と (フィールド) を警告するなどのname別の関数を実行したいと思います。おそらくイベントバインダーで?iddescriptiontypeahead:autocompleted

更新/サンプル:

以下Dajaxice.async.get_closest_events()は、内部サーバーに 3 つのパラメーター (緯度、経度、クエリ) を送信します。クエリは、ユーザーが書き込んだ値です。venuesNamesドロップダウンに表示される配列 ( ) を返します。

$( "#locationQueryInput" ).typeahead({
    remote:{
        replace: function (query ) {
            //alert($("locationQueryInput").val());
            Dajaxice.async.get_closest_events( 
                (function(data){                                            
                    venuesNames = []
                    venuesDetails = []
                    for (var i = 0; i < data.fVenues.length; i++) {
                        venuesNames.push(data.fVenues[i].name)
                        venuesDetails[ data.fVenues[i].name ] = {
                                                'id' : data.fVenues[i].id,
                                                'lat' : data.fVenues[i].lat,
                                                'lng' : data.fVenues[i].lng,
                                                'address' :data.fVenues[i].address,
                                                'city' :data.fVenues[i].city,
                        }
                    }
                    return venuesNames
                }), 
                {'lat' : new_marker_latlng.lat, 'lng' : new_marker_latlng.lng, 'query' : query }  
            );
        }


    }

}).bind('typeahead:selected', function(obj,datum){
// do stuff upon completion
...
}
4

1 に答える 1

1

JSON 応答を使用する良い例を次に示します:最新の typeahead.js ライブラリを使用して JSON 応答をレンダリングする方法

そして、イベントをバインドするには、上記の提案を次のように組み合わせます。

$('.selector').typeahead({
    // base this part on example link given above...
}).bind('typeahead:autocompleted', function (obj, datum) {
    console.log(datum);  // datum will contain the value that was autocompleted
});

更新 1: クエリ パラメーターに関して、関数呼び出しが正しく記述されていません。ドキュメントによると:

replace – リクエスト URL をオーバーライドするために使用できるシグネチャ replace(url, uriEncodedQuery) を持つ関数。有効な URL を返すことが期待されます。設定されている場合、URL に対してワイルドカード置換は実行されません。

したがって、URL を最初のパラメーターとして渡し、クエリ文字列を 2 番目のパラメーターとして渡す必要があります。

remote:{
    replace: function (url, query ) {
    }
}
于 2013-10-02T03:16:01.423 に答える