jQuery 自动完成无法正常工作
jQuery autocomplete not properly working
当我输入第一个字符时自动完成打开,但当我输入另一个或两个字符时它不会过滤,保持不变。
即使在第一个字符上,对于任何类型的内容,列表打开都是相同的,顺序(没有过滤器)来自网络服务。
这是我的代码:
$(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"
}
]
看来我少了什么。
感谢您的帮助
我以前也遇到过这个问题。在提供结果的 PHP 脚本中,您需要根据 jQuery 自动完成脚本传递给它的值进行过滤。使用 $_GET['term'] 这个过滤器,因为这是自动完成的用途。
jQuery 自动完成插件正在以 "term" 作为变量向您的脚本静默发送 GET 请求,据我所知,您无法配置此设置。
请注意,您可能希望将所需字符数增加到一个以上,因为您将返回大量用户不关心的结果。我发现三个字符通常是速度和实用性之间的一个很好的平衡。
根据您的编辑,您的 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');
});
}
在您的 'json/searchobjects.php?term=TERM'
中将 term
作为请求参数以使用 select * from table where Label='%$_GET["term"]'
或其他方式在服务器端进行过滤
当我输入第一个字符时自动完成打开,但当我输入另一个或两个字符时它不会过滤,保持不变。
即使在第一个字符上,对于任何类型的内容,列表打开都是相同的,顺序(没有过滤器)来自网络服务。
这是我的代码:
$(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"
}
]
看来我少了什么。
感谢您的帮助
我以前也遇到过这个问题。在提供结果的 PHP 脚本中,您需要根据 jQuery 自动完成脚本传递给它的值进行过滤。使用 $_GET['term'] 这个过滤器,因为这是自动完成的用途。
jQuery 自动完成插件正在以 "term" 作为变量向您的脚本静默发送 GET 请求,据我所知,您无法配置此设置。
请注意,您可能希望将所需字符数增加到一个以上,因为您将返回大量用户不关心的结果。我发现三个字符通常是速度和实用性之间的一个很好的平衡。
根据您的编辑,您的 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');
});
}
在您的 'json/searchobjects.php?term=TERM'
中将 term
作为请求参数以使用 select * from table where Label='%$_GET["term"]'
或其他方式在服务器端进行过滤