Javascript 自动完成显示所有结果
从页面Javascript 自动完成显示所有结果,javascript,autocomplete,Javascript,Autocomplete,从页面format.json收集数据 在JS中,我有: $('input[name="q"]').autoComplete({ source: function(term, response){ $.getJSON('/search.json', { q: term }, function(data){ response(data); }); } }); 对于自动完成,我使用这个 输出的责任是什么? 我已经在自动完成中删除了所有的名字。若要退出,只需申请即可。只
format.json
收集数据
在JS中,我有:
$('input[name="q"]').autoComplete({
source: function(term, response){
$.getJSON('/search.json', { q: term }, function(data){ response(data); });
}
});
对于自动完成,我使用这个
输出的责任是什么?
我已经在自动完成中删除了所有的名字。若要退出,只需申请即可。只有那些重合的才有必要删除
是否对其负责.indexOf(term)
?使用什么
屏幕显示所有结果(有匹配项的和没有匹配项的)。只需要查看那些匹配的数据。因为您要从JSON文件获取数据,所以必须在客户端进行过滤。与向服务器发送实际AJAX请求的方式一样,您可以在服务器上进行过滤,只返回所需的数据(这就是为什么将查询项作为参数发送的原因) 因此,您需要更改代码,使其如下所示:
$('input[name="q"]').autoComplete({
source: function (term, response) {
$.getJSON('/search.json', function (data) {
term = term.toLowerCase();
var matches = [];
for (i = 0; i < data.length; i++)
if (~data[i].toLowerCase().indexOf(term)) matches.push(data[i]);
response(matches);
});
}
});
变量
选项
必须是数据数组吗?如何做到这一点?我只想显示前5个值。我们可以限制下拉项的数量吗?当然,您可以更改行响应(匹配项)代码>到响应(匹配.slice(0,5))如果担心性能,请查看“代码>或编辑”。
$('input[name="q"]').autoComplete({
source: function (term, response) {
$.getJSON('/search.json', function (data) {
term = term.toLowerCase();
var matches = [];
for (i = 0; i < data.length; i++)
if (~data[i].toLowerCase().indexOf(term) && matches.length == 4) {
matches.push(data[i]);
break;
}
response(matches);
});
}
});