是否可以在自动完成时设置最大结果数?

时间:2011-06-24 13:54:24

标签: jquery jquery-ui jquery-autocomplete

我正在使用autocomplete的{​​{1}}:优秀的插件!

我唯一不喜欢的是,如果我有一个jQuery UI列表,我只想显示40 items

这是我的实际代码:

10 items

是否可以放置一些参数来做这件事?

5 个答案:

答案 0 :(得分:3)

来自迁移指南:

  

max:走了;如果您的服务器也发送   许多项目,传递一个功能   调用$ .ajax和的源选项   截断或过滤结果   列表。

http://www.learningjquery.com/2010/06/autocomplete-migration-guide

答案 1 :(得分:2)

如果您不想修改源列表,可以尝试滚动结果:

http://jqueryui.com/demos/autocomplete/#maxheight

答案 2 :(得分:2)

您可以尝试使用回调函数作为源来实现自己的过滤器功能。类似的东西:

$('input').autocomplete({
    source : function (request, response) {

        var max = 10;    // set this to something
        var j = 0;

        response($.map(availableTags, function(i) {
            if (j < max && i.toLowerCase().indexOf(request.term.toLowerCase()) != -1) {
                j++; return { label : i };
            } else { 
                return null;
            }   
        }));
    }
});

这基本上是尝试检查字符串数组中的每个元素,并执行不区分大小写的contains搜索。您可能需要修改它以仅检查startsWithendsWith或您拥有的任何内容。当然,您可能还想使用regex来加快速度。

我还在这里设置了一个简单示例:http://jsfiddle.net/2exCC/ 尝试搜索C之类的内容。这最多应返回scala,并留下scheme

答案 3 :(得分:1)

这是一个讨厌的解决方案,你真的应该寻找一个更好的解决方案,但如果你找不到任何东西,你可以隐藏.ui-menu-item时自动完成打开弹出窗口提示(open事件)。

答案 4 :(得分:0)

是的。您需要使用setOptions()函数。

示例:

$('input#suggest').setOptions({
 max: 15
});

http://docs.jquery.com/Plugins/Autocomplete/setOptions#options