Javascript 过滤jqueryUI自动完成选项

Javascript 过滤jqueryUI自动完成选项,javascript,jquery,jquery-ui,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui,Jquery Ui Autocomplete,我正在我的网站上使用jqueryUI自动完成小部件。假设我的数据库中有以下项目 苹果 类人猿 亚伯拉罕 土豚 当我在autocomplete小部件中键入“a”时,我会在输入字段下面得到该列表。我已经编写了额外的代码,这样当您选择一个项目时,它会添加到输入字段下面的UL中,并且输入字段会被清除 所以,你输入“a”,你会看到这个列表,然后你选择苹果。苹果现在是UL输入字段下方的一个LI。您现在再次键入“a”,然后再次看到列表。。。这是我的问题 这是我第二次想展示除了苹果以外的一切 我想知道如何在

我正在我的网站上使用jqueryUI自动完成小部件。假设我的数据库中有以下项目

  • 苹果
  • 类人猿
  • 亚伯拉罕
  • 土豚
当我在autocomplete小部件中键入“a”时,我会在输入字段下面得到该列表。我已经编写了额外的代码,这样当您选择一个项目时,它会添加到输入字段下面的UL中,并且输入字段会被清除

所以,你输入“a”,你会看到这个列表,然后你选择苹果。苹果现在是UL输入字段下方的一个LI。您现在再次键入“a”,然后再次看到列表。。。这是我的问题

这是我第二次想展示除了苹果以外的一切

我想知道如何在两个不同的地方做到这一点:

1-我想知道如何截获向服务器发出GET查询的事件,这样,当您键入“a”时,我就可以让服务器发送“q=a&exclude=apple,foo,bar”,而不是向服务器发送“q=a”。然后我在服务器端过滤列表,一切都很好

2-我还想知道如何拦截构建选项列表的事件。这样,我可以看到它即将显示选项“苹果、猿等”,我可以从列表中剪掉“苹果”

我在文档中看到了这些事件,但我不确定如何使用它们来实现上述目标


谢谢

您可以通过为autocomplete小部件的
source
选项定义一个函数来实现这两个功能。从那里,您可以使用
$.AJAX
自己执行AJAX请求。比如:

$("input").autocomplete({
    source: function (request, response) {
        var exclude = /* build excluded items list. */;
        var term = request.term;

        $.ajax({
            url: "server.php",
            data: { q: term, exclude: exclude },
            dataType: "json",
            success: function(data) {
                /* Here, you could accomplish #2 by filtering items out of data */
                /* You must call the supplied callback to let the widget know what to suggest */
                response(data);
            }
        });

    }
});
我可以想象,您只需提取
ul
中已有的项,就可以构建排除的项