我在我的网站上使用jqueryUI自动完成小部件。假设我的数据库中有以下项目......
当我在自动完成小部件中输入“a”时,我会在输入字段下面找到该列表。我已经编写了额外的代码,当你选择一个项目时,它会被添加到输入字段下面的UL中,并且输入字段会被清除。
因此,您输入“a”,您会看到该列表,然后选择apple。 Apple现在是UL中输入字段以下的LI。你现在再次输入“a”,然后再次看到列表......这是我的问题。
这是第二次我要展示苹果以外的一切。
我很想知道如何在两个不同的地方做到这一点:
1 - 我很想知道如何拦截向服务器发出GET查询的事件,这样当你输入“a”时,我可以发送“q = a”给服务器,而不是“q = A和排除=苹果,FOO,栏”。然后我过滤列表服务器端,一切都很好。
2 - 我也很想知道如何拦截构建选项列表的事件。这样,我可以看到它将显示“apple,ape等”选项,我可以从该列表中删除“apple”。
我看到了文档中的事件 - 但我不确定如何使用它们来实现上述目标。
谢谢!
答案 0 :(得分:2)
您可以通过为自动完成小部件的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
中已有的项目即可构建被排除的项目。