AutoComplete从数组中获取所有数据,而不仅仅是包含键入字母

时间:2016-08-01 10:59:52

标签: javascript jquery autocomplete

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网站上尝试这个例子时,它可以正常工作。

为什么会这样?我错过了什么?

2 个答案:

答案 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中检查给定数组的每个值中的字符串位置。