当我键入第一个字符时,自动完成将打开,但当我键入另一个或两个字符时,它不会过滤,保持不变。
即使在第一个字符上,打开列表对于任何类型的内容也是一样的,按顺序(没有过滤器)是来自web服务的。
这是我的代码:
$(function() {
$('#to').autocomplete({
source: 'json/searchobjects.php',
minLength: 1,
select: function(event, ui) {
globalDest = ui.item.latlng;
}
});
});以下是JSON对象:
[
{
label: "label-1",
value: "val-1"
},
{
label: "label-2",
value: "val-2"
}
]它的样子,我错过了什么。
谢谢你的帮助
发布于 2015-01-07 18:43:04
我以前也经历过这个问题。在为结果服务的PHP脚本中,需要根据jQuery自动完成脚本传递给它的值进行筛选。对这个过滤器使用$_GET‘’term‘,因为这是自动完成的用法。
jQuery自动完成插件是以"term“作为变量向您的脚本发送GET请求,据我所知,您无法配置此设置。
请注意,您可能希望将所需字符的数量增加到一个以上,因为您将获得大量用户不关心的返回结果。我发现三个字符通常是速度和有用性之间的一个很好的平衡。
发布于 2015-01-07 18:43:59
根据您的编辑,您的json必须是["el1","el2",...,"el3"]类型,或者如果您需要保持[{},{},...]类型。但如果您需要使用对象列表,请按以下方式使用
source: function (request, response) {
jQuery.getJSON(u, {
term: request.term*,
json: 'yep'*/
}).done(function (_result2) {
//alert(_result2[0].Label)
response($.map(_result2, function (item) {
return {
label: item.Label,
value: item.Value,
id: item.Value
}
}));
}).fail(function () {
alert('fail');
})
.error(function () {
alert('error');
});
}让term作为请求解析器在您的'json/searchobjects.php?term=TERM'中过滤服务器-侧使用select * from table where Label='%$_GET["term"]'之类的
https://stackoverflow.com/questions/27826159
复制相似问题