6

typeahead.js を使用して複数のフィールドを持つフォームがあるとします。一部のフィールドでは、以前に入力されたフォーム フィールドの値をクエリの一部として渡したいとします。例えば

<input id="First_Name" type="text">
<input id="Last_Name" type="text">

JavaScript:

$('#Last_Name').typeahead({
  name: 'typeahead',
  remote: 'Search.pl?query=%QUERY'.
  template:[
 ......
  ].join(''),
  engine: Hogan
});

複数の入力ボックスがあるため、リモート クエリの一部として他の入力ボックスの ID と値を渡す必要があるものもあります。フィールドに値が含まれている場合にのみ、この文字列に ID と値を追加する一般的な方法があるのではないかと思います。

前もって感謝します

4

2 に答える 2

8

出来るよ。a を使用しreplaceて、クエリ文字列を設定する前に処理します。

何かのようなもの:

$('#Last_Name').typeahead({
  name: 'typeahead',
  remote: {
    url: 'Search.pl?query=%QUERY',
    replace: function(url, uriEncodedQuery) {
      val = $('#First_Name').val();
      if (!val) return url;
      //correction here
      return url + '&first_name=' + encodeURIComponent(val)
    },
  template: ...,
  engine: Hogan
});
于 2013-10-17T06:02:05.910 に答える
2

古いトピックですが、より詳細な回答で役立ちます:

@Shakedが既に述べたように、置換機能を使用する必要があります

1. 動的パラメータが必要な場合

タイプヘッド入力の一部ではない動的パラメーターは必要ありません。

このケースはお勧めできません。なぜなら、このような状況にある場合、タイプヘッドは必要ないからです。

$('#myID').typeahead({
  name: 'typeahead',
  remote: {
    url: 'search.php',
    replace: function(url, uriEncodedQuery) {
      val = $('#yourValue').val();
      if (!val) return url;
      return url + '?param=' + encodeURIComponent(val)
    },
  template: ...,
});

2. 動的パラメータを追加する場合

このケースはもっと興味深いものです。Typehead 入力の一部ではない、他の DOM 入力からのいくつかの追加パラメーターを取得したくない場合があります。

replace も使用する必要がありますが、内容は異なります。

 $('#myID').typeahead({
      name: 'typeahead',
      remote: {
        wildcard: '%QUERY',
        url: 'search.php?query=%QUERY',
        replace: function(url, uriEncodedQuery) {
          val = $('#yourValue').val();
          if (!val) return url.replace("%QUERY",uriEncodedQuery);
          return url.replace("%QUERY",uriEncodedQuery) + '&param=' + encodeURIComponent(val)
        },
      template: ...,
    });

このコードを使用すると、TypeHead 入力 + いくつかの追加パラメーターを取得できます。

于 2017-01-05T12:02:00.477 に答える