Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让Ajax.Autocompleter无需键入即可执行请求?_Javascript_Ajax_Scriptaculous_Autocomplete - Fatal编程技术网

Javascript 如何让Ajax.Autocompleter无需键入即可执行请求?

Javascript 如何让Ajax.Autocompleter无需键入即可执行请求?,javascript,ajax,scriptaculous,autocomplete,Javascript,Ajax,Scriptaculous,Autocomplete,我正在使用scriptaculous的Ajax.Autocompleter进行带有不同过滤器的搜索 过滤器要求我动态地将数据传递到自动完成程序中,我已经从下面的链接成功地学会了这一点 现在,我有多个过滤器和一个搜索框。我如何让自动完成程序在不输入输入的情况下发出请求,而是通过单击一个新的过滤器 下面是一个要澄清的用例。页面加载时,有多个过滤器(只有带有onclick的链接)和一个带有自动补全器的输入字段。我键入一个查询,然后执行自动完成器请求。然后,我点击一个不同的过滤器,我想用相同的查询执

我正在使用scriptaculous的Ajax.Autocompleter进行带有不同过滤器的搜索

过滤器要求我动态地将数据传递到自动完成程序中,我已经从下面的链接成功地学会了这一点

现在,我有多个过滤器和一个搜索框。我如何让自动完成程序在不输入输入的情况下发出请求,而是通过单击一个新的过滤器

下面是一个要澄清的用例。页面加载时,有多个过滤器(只有带有onclick的链接)和一个带有自动补全器的输入字段。我键入一个查询,然后执行自动完成器请求。然后,我点击一个不同的过滤器,我想用相同的查询执行另一个请求,但过滤器不同


或者更简单地说,我如何让自动完成程序在需要时执行请求,而不是依靠键入来触发它?

查看Scriptaculous源代码后,我建议您尝试调用
onObserverEvent()


回答我自己的问题:假装按键。它确保发出请求,并且下拉框变得可见。这是我的假按键功能,它考虑了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);
    }
  }

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

/**/
var autoCompleter = new Ajax.Autocompleter(/* exercise for the reader */);
// Magic happens
autoCompleter.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>