动态更改数据源jQuery ui自动完成焦点输入字符

时间:2014-05-22 23:33:51

标签: jquery jquery-ui autocomplete jquery-autocomplete

我试图尝试使用jQuery Autocomplete为输入框使用不同的数据源选项。

我有id #polysearch的输入框。我想自动完成焦点上的输入框(只是放光标)和源选项' data1'并且我想使用源选项' data2'自动填充输入框。键入2个字符时。 请帮忙!

谢谢!

1 个答案:

答案 0 :(得分:5)

通过使用source选项进行自动填充,您可以根据request.term的长度(用户在框中输入的内容)自定义要使用的数组。

当输入被聚焦时,您还需要手动调用自动完成的search方法,以便在焦点上打开它。

以下是我必须完成这项工作的代码。 See it in action

$(function() {
    var data1 = 'abcdefghijklmnopqrstuvwxyz'.split('');
    var data2 = 'cat dog fish shark unicorn sasquatch flamingo dingo snake mouse rat'.split(/\s+/g);

    $('#in').autocomplete({
        minLength: 0, // so it shows straight away without typing anything
        source: function (request, response) {
            if ((request.term || '').length <= 1)
               response(filter(data1, request.term));
            else
               response(filter(data2, request.term));
        }
    }).on('focus', function () {
        $(this).autocomplete('search', '');
    });

    function filter(array, searchTerm) {
        var matchingItems = [];
        for (var i = 0; i < array.length; i++) {
            if (array[i].indexOf(searchTerm.toLocaleLowerCase()) >= 0)
                matchingItems.push(array[i]);
        }
        if (matchingItems.length === 0)
            return ['No Matches'];
        return matchingItems;
    }
});