var cache = {};
$( "#skills" ).autocomplete({
minLength: 3,
source: function( request, response ) {
var term = request.term;
if ( term in cache ) {
response( cache[ term ] );
return;
}
$.getJSON( "/profile/skills-list", request, function( data, status, xhr ) {
cache[ term ] = data;
response( data );
});
}
});
使用此代码(来自jQuery UI Autocomplete的示例),我从数组中获取所有数据,而不仅仅是包含在输入字段中输入的字母I的数据。当我在jQuery网站上尝试这个例子时,它可以正常工作。
为什么会这样?我错过了什么?
答案 0 :(得分:1)
给出的代码似乎没问题。您确定关键字过滤在服务器端运行良好吗?可能是服务器端代码没有根据输入字段中的关键字过滤结果。
答案 1 :(得分:0)
var cache = {};
$( "#skills" ).autocomplete({
minLength: 2,
source: function( request, response ) {
var term = request.term;
$.getJSON( "/profile/skills-list", function( data, status, xhr ) {
var skills = [];
$.each(data, function(i, item) {
if (data[i].indexOf(term) != -1)
{
skills.push(data[i])
}
});
response( skills );
});
}
});
Romy是对的。我从服务器和服务器端获取所有数据不存在检查值的功能。因此,我需要在JavaScript中检查给定数组的每个值中的字符串位置。