3

さまざまなフィルターを使用した検索に、scriptaculous の Ajax.Autocompleter を使用しています。

http://github.com/madrobby/scriptaculous/wikis/ajax-autocompleter

フィルターでは、データをオートコンプリートに動的に渡す必要があります。これは、次のリンクからうまく学習できました。

http://www.simpltry.com/2007/01/30/ajaxautocompleter-dynamic-parameters/

これで、複数のフィルターと 1 つの検索ボックスができました。 入力を入力せずに、新しいフィルターをクリックすることによって、オートコンプリーターがリクエストを行うようにするにはどうすればよいですか?

明確にするための使用例を次に示します。ページが読み込まれ、複数のフィルター (onclicks とのリンクのみ) と、オートコンプリートが添付された 1 つの入力フィールドがあります。クエリを入力すると、オートコンプリート リクエストが実行されます。次に、別のフィルターをクリックすると、同じクエリで別のフィルターを使用して別の要求を実行したいと思います。

またはもっと簡潔に言えば、入力に依存してトリガーするのではなく、必要なときにオートコンプリータにリクエストを実行させるにはどうすればよいですか?

4

4 に答える 4

3

また、 activate() メソッドがうまく機能することもわかりました。これが私のサンプルコードです....

<script type="text/javascript">
    /*<![CDATA[*/

    var autocomp1 = new Ajax.Autocompleter("search", "AjaxResultsListPlaceholder", "ajaxServerSideSearchHandler.php", {
            frequency: 1,
            minChars: 10,
            indicator: "AjaxWorkingPleaseWaitPlaceholder",
            } );


    /*]]>*/
</script>

<form id="theform">
    <input type="text" id="search" name="search" value="" />
    <input type="button" id="btn_search" name="btn_search" value="Search" onclick="autocomp1.activate();" />
    <div id="AjaxWorkingPleaseWaitPlaceholder" style="display: none; border: 1px solid #ffaaaa;">
    </div>
    <div id="AjaxResultsListPlaceholder" style="display: none;; border: 1px solid #aaffaa;">
    </div>

</form>
于 2010-02-05T22:59:46.460 に答える
2

私自身の質問に答えるには、キーを押したふりをします。リクエストが確実に行われ、ドロップダウン ボックスが表示されるようになります。これは、IE と Firefox の違いを考慮して、キーの押下を偽造する関数です。

  function fakeKeyPress(input_id) {
    var input = $(input_id);
    if(input.fireEvent) {
      // ie stuff
      var evt = document.createEventObject();
      evt.keyCode = 67;
      $(input_id).fireEvent("onKeyDown", evt);
    } else { 
      // firefox stuff
      var evt = document.createEvent("KeyboardEvent");
      evt.initKeyEvent('keydown', true, true, null, false, false, false, false, 27, 0);
      var canceled = !$(input_id).dispatchEvent(evt);
    }
  }
于 2008-09-24T20:17:35.727 に答える
1
var autoCompleter = new Ajax.Autocompleter(/* exercise for the reader */);
// Magic happens
autoCompleter.activate();
于 2009-11-06T19:08:16.410 に答える
1

Scriptaculous のソースを調べて、keypress で何が起こるかを確認したので、 を呼び出してみることをお勧めしますonObserverEvent()

var autoCompleter = new Ajax.Autocompleter(/* exercise for the reader */);
// Magic happens
autoCompleter.onObserverEvent();
于 2008-09-24T02:13:06.363 に答える