4

Web アプリケーションに twitters typeahead プラグインを適用してみました。typeahead プラグインを使用して、多くの typeahead 入力フィールドを初期化します。プラグインに命が吹き込まれます。ただし、Id は、私が書いているクエリ文字列と、表示することを選択した値と一致していないようです。たとえば、「Nuu」と書くことを選択した場合、最初の 3 文字が完全に異なる値も表示されます。

私のhtmlは次のようになります:

そして、私の JavaScript は次のようになります。

$(selector).each(function(){
  var jsonUrl = $(this).attr('data-json');
    $(this).typeahead({
      name : 'berths',
      remote : {
      url : jsonUrl,
      filter : myfilter
    }
  });
});


myfilter = function(parsedResponse) {
  var datums = $.map(parsedResponse, function(berth) {
    var datum = {
      name : berth.name,
      value : berth.name + (berth.alias ? " (" + berth.alias + ")" : ""),
      tokens : [ berth.name, berth.alias ],
      latitude : berth.latitude,
      longitude : berth.longitude
    };

    return datum;
  });

  return datums;
};

私が間違っていることの手がかりはありますか?

4

2 に答える 2

2

typeahead.js は特定のクエリのローカル データとプリフェッチ データをフィルター処理しますが、リモート データはフィルター処理しません。typeahead.js は、リモート データのフィルタリングがサーバー側で行われるという前提で動作します。

あなたのユースケースでは、プリフェッチを使用する方が良いオプションのようです。

$(selector).typeahead({
  name : 'berths',
  prefetch : {
    url : jsonUrl,
    filter : myfilter
  }
});
于 2013-07-12T00:03:58.970 に答える
1

のクエリ データが不足していjsonUrlませんか? TypeAhead では、フィールドに入力されたデータに置き換えるために、URL に置換文字列が必要なので、URL は次のようになります。

/my/data/source/?text=%QUERY

ここで、%QUERYは入力フィールドの内容に置き換えられます。

%QUERYがデフォルトであることに注意してください。任意の文字列を使用できるはずですが、まだ機能していません。

于 2013-07-11T03:28:42.890 に答える