如何使一个于Ajax.Autocompleter而无需键入执行的请求?(How do I make

2019-09-22 14:37发布

我使用的是Scriptaculous的于Ajax.Autocompleter与不同的过滤器进行搜索。

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

该过滤器需要我将数据传递到autocompleter动态,我已经成功地学会从以下链接做。

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

现在,我有多个过滤器和一个搜索框。 我如何获得autocompleter发出请求,而无需输入到输入,而是通过点击一个新的过滤器?

这里有一个用例来澄清。 页面加载时,有多个过滤器(只是onclicks链接),并把附有autocompleter一个输入字段。 I型的查询,并执行autocompleter请求。 然后,我点击不同的过滤器,我想用相同的查询,但不同的过滤器进行另一个请求。

或者更简洁地说,我怎么做autocompleter执行请求时,我想 ,而不是依赖于输入触发呢?

Answer 1:

我还发现,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>


Answer 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);
    }
  }


Answer 3:

说完看了看Scriptaculous的源代码,看看按键时会发生什么情况 ,我建议你尝试调用onObserverEvent()

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


Answer 4:

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


文章来源: How do I make an Ajax.Autocompleter perform a request without typing?