在jQuery UI自动完成中限制结果

我正在使用jQuery UI自动完成。

$("#task").autocomplete({ max:10, minLength:3, source: myarray }); 

最大参数不起作用,我仍然得到超过10个结果。 我错过了什么吗?

这里是jQueryUI小部件的正确文档 。 没有限制最大结果的内置参数,但您可以轻松完成:

 $("#auto").autocomplete({ source: function(request, response) { var results = $.ui.autocomplete.filter(myarray, request.term); response(results.slice(0, 10)); } }); 

你可以给source参数提供一个函数,然后在被过滤的数组上调用slice

这是一个工作的例子: http : //jsfiddle.net/andrewwhitaker/vqwBP/

你可以将minlength选项设置为minlength很大的值,或者你可以通过像这样的CSS来完成,

 .ui-autocomplete { height: 200px; overflow-y: scroll; overflow-x: hidden;} 

相同的“Jayantha”说使用CSS将是最简单的方法,但这可能会更好,

 .ui-autocomplete { max-height: 200px; overflow-y: scroll; overflow-x: hidden;} 

注意唯一的区别是“最大高度”。 这将允许小部件调整到较小的高度,但不超过200像素

添加到安德鲁的答案 ,你甚至可以引入一个maxResults属性,并以这种方式使用它:

 $("#auto").autocomplete({ maxResults: 10, source: function(request, response) { var results = $.ui.autocomplete.filter(src, request.term); response(results.slice(0, this.options.maxResults)); } }); 

jsFiddle: http : //jsfiddle.net/vqwBP/877/

这应该有助于代码的可读性和可维护性!

这是我用过的

 .ui-autocomplete { max-height: 200px; overflow-y: auto; overflow-x: hidden;} 

溢出自动,所以滚动条不会显示,当它不应该。

如果结果来自mysql查询,那么直接限制mysql结果会更高效:

 select [...] from [...] order by [...] limit 0,10 

其中10是你想要的最大行数

插件: jquery-ui-autocomplete-scroll与滚动和限制结果是美丽的

 $('#task').autocomplete({ maxShowItems: 5, source: myarray }); 

我以下面的方式做了:

 success: function (result) { response($.map(result.d.slice(0,10), function (item) { return { // Mapping to Required columns (Employee Name and Employee No) label: item.EmployeeName, value: item.EmployeeNo } } )); 

jQuery允许您在将自动填充附加到input时更改默认设置:

 $('#autocomplete-form').autocomplete({ maxHeight: 200, //you could easily change this maxHeight value lookup: array, //the array that has all of the autocomplete items onSelect: function(clicked_item){ //whatever that has to be done when clicked on the item } }); 

我已经尝试了上面所有的解决scheme,但我只能这样工作:

 success: function (data) { response($.map(data.slice (0,10), function(item) { return { value: item.nome }; })); },