Как заставить Ajax.Autocompleter выполнять запрос без ввода? - PullRequest
3 голосов
/ 24 сентября 2008

Я использую Ajax.Autocompleter от scriptaculous для поиска с разными фильтрами.

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

Фильтры требуют от меня динамической передачи данных в автозаполнение, что я успешно научился делать по следующей ссылке.

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

Теперь у меня есть несколько фильтров и одно окно поиска. Как заставить автозаполнение сделать запрос без ввода ввода, но щелчком по новому фильтру?

Вот пример использования для пояснения. Страница загружается, есть несколько фильтров (только ссылки с кликами) и одно поле ввода с прикрепленным автозаполнением. Я набираю запрос, и выполняется запрос автозаполнения. Затем я нажимаю на другой фильтр и хочу, чтобы другой запрос был выполнен с тем же запросом, но с другим фильтром.

Или, более кратко, как заставить автозаполнитель выполнять запрос , когда я хочу , вместо того, чтобы зависеть от набора текста для его запуска?

Ответы [ 4 ]

3 голосов
/ 06 февраля 2010

Я также обнаружил, что метод activ () работал отлично. Вот мой пример кода ....

<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>
2 голосов
/ 25 сентября 2008

Чтобы ответить на мой вопрос: подделать нажатие клавиши. Это гарантирует, что запрос сделан, и что выпадающий список становится видимым. Вот моя функция подделывать нажатие клавиши, которая учитывает различия в 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);
    }
  }
1 голос
/ 06 ноября 2009
var autoCompleter = new Ajax.Autocompleter(/* exercise for the reader */);
// Magic happens
autoCompleter.activate();
1 голос
/ 24 сентября 2008

Посмотрев на источник Scriptaculous, чтобы увидеть , что происходит при нажатии клавиши , я бы посоветовал вам попробовать позвонить onObserverEvent().

var autoCompleter = new Ajax.Autocompleter(/* exercise for the reader */);
// Magic happens
autoCompleter.onObserverEvent();
...