在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 }; })); },