2015-09-04 145 views
0

我正在使用jqueryUI自动完成脚本。问题是我想限制它提供给6的建议的数量,因为它提供了太多的建议。这是脚本:jqueryui自动完成的建议数量

$.get('file.txt', function(x) { 

    var i; 
    var pos = 0; 
    var availableTags = []; 

    x = x.split(/[\#\n]+/); 

    for (i = 0; i < x.length; i = i + 4) 
     availableTags[pos++] = x[i]; 

    console.log(availableTags); 

    $(function() { 
     $("#search").autocomplete({source: availableTags}); 
     response(availableTags.slice(0, 6)); 
    }); 

    }, 'text'); 

我发现和excellent solution by Andrew Whitaker,但不能使它的工作。他建议使用

response(availableTags.slice(0, 6)); 

任何解决方案来限制我的脚本上的建议数量?

回答

1

你可以覆盖_renderMenu功能,显示最大的N个项目

$.ui.autocomplete.prototype._renderMenu = function(ul, items) { 
    var self = this; 
    $.each(items, function(index, item) { 
     if (index < 10) // here we define how many results to show 
     {self._renderItem(ul, item);} 
     }); 
} 

或切片回应:

$("#search").autocomplete({ 
    source: function(request, response) { 
     var results = $.ui.autocomplete.filter(availableTags, request.term); 

     response(results.slice(0, 6)); 
    } 
}); 
+0

非常感谢michal pavlik,作品几乎完美,但影响到html结果和CSS。你介意我是否等待更简单的答案? – Kathlyn

+0

当然,我编辑了我的文章,并添加了切片结果的更简单的解决方案。 –

+0

那么,第二个是行不通的:'(但这可能是我的错,我在我的问题中编辑了代码,以向您展示我是如何包含您的代码的,您是否发现任何错误? – Kathlyn

0
$(function() { 
    var limit = 3; 
    var tags = [ 
     "hello","hi", "him", 'here',"his", "honour", "banquet" 
    ]; 
    $("#search").autocomplete({ 
     source: tags.slice(0, limit), 

     }); 
}); 

请找到上述解决方案,让我知道它是否适合你。