2

HTML:

<input type="text" id="shop-id">

JS:

$(document).ready(function(){

    $( "#shop-id" ).autocomplete({
        source: "/ticket/get_sids",
        select: function(event, ui){
          //...
        }
    });               

});

奇妙なオートコンプリートの問題があります。このような静的変数でソースを宣言すると

    var data = ["0200","0032"];

    $( "#shop-id" ).autocomplete({
        source: "/ticket/get_sids"
    });

すべてが期待どおりです。

ただし、動的ソースURLを使用すると、オートコンプリートは検索をフィルタリングしないようです。検索テキストとして何を入力しても、オートコンプリートはフィルタリングせずにソース全体を開きます。たとえば、「g」と入力すると0200、0032が開きますが、「g」がソース内の何とも一致しないため、一致しないはずです。

動的ソースは、次のような純粋なjsonを返します["0200","0032"]。これはphpページです:

return new Response(json_encode($data));

これは

["0200","0032"]

ブラウザウィンドウで。

環境:jQuery 1.7.2 jQuery-Ui 1.8.2

4

2 に答える 2

1

フィルタ値を送り返すために使用するデータパラメータがありません...それが理にかなっている場合。したがって、応答データを返す前に、何らかの形式のサーバー側フィルタリングを実装する必要があります

「「g」と入力すると、0200、0032が開きますが、「g」がソース内の何とも一致しないため、一致しないはずです。」

$(document).ready(function(){

    $( "#shop-id" ).autocomplete({
        source: "/ticket/get_sids",
        select: function(event, ui){
          //...
        },
       data: { term: request.term   }  //"term" could be anything, based on parameters your server side method expects
        //...
     })
 });    

私は以前にこれに似た質問に答えました。お役に立てれば?https://stackoverflow.com/a/11930525/1105314

于 2012-09-17T11:15:32.567 に答える
1

文字列が使用される場合、オートコンプリートプラグインは、その文字列がJSONデータを返すURLリソースを指すことを期待します。同じホストまたは別のホストに配置できます(JSONPを提供する必要があります)。オートコンプリートプラグインは結果をフィルタリングしません。代わりに、リクエストパラメータ「term」がURLに追加されます。これは、サーバー側スクリプトが結果をフィルタリングするために使用する必要があります

于 2012-09-17T11:35:06.483 に答える