限制jQuery UI自动完成的结果

san*_*osh 124 jquery-ui autocomplete jquery-ui-autocomplete

我正在使用jQuery UI Autocomplete.

 $("#task").autocomplete({
     max:10,
     minLength:3,
     source: myarray
 });          
Run Code Online (Sandbox Code Playgroud)

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

And*_*ker 266

这里是适当的文件jQueryUI的部件.没有用于限制最大结果的内置参数,但您可以轻松完成:

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

        response(results.slice(0, 10));
    }
});
Run Code Online (Sandbox Code Playgroud)

您可以为source参数提供函数,然后调用slice已过滤的数组.

这是一个有效的例子: http ://jsfiddle.net/andrewwhitaker/vqwBP/

  • 奇迹般有效.如果您的自动完成列表很长(~10k结果)并且减慢html渲染,这是非常有用的吗? (7认同)
  • 在提供的解决方案的jsFiddle中,将切片值从10更改为3,然后在输入框中输入字符C.您将只收到3个值,最终用户可以使他们相信这些是唯一可用的三个值并且可能无法继续输入字符.我建议的是提供一个很好的帮助文本来配合这个解决方案(例如,只显示前XX个匹配的结果.继续输入以优化结果."这些方面的东西. (2认同)

Jay*_*ena 45

您可以将minlength选项设置为某个大值,或者您可以通过这样的css来执行此操作,

.ui-autocomplete { height: 200px; overflow-y: scroll; overflow-x: hidden;}
Run Code Online (Sandbox Code Playgroud)

  • 这非常hacky.如果你有一个非常长的列表,并且自动完成功能会返回数千个匹配项,那么它将会很慢...... (17认同)
  • 同意Vajk.当游戏在JS中时,不要使用CSS. (4认同)

小智 24

像"Jayantha"一样说使用css是最简单的方法,但这可能会更好,

.ui-autocomplete { max-height: 200px; overflow-y: scroll; overflow-x: hidden;}
Run Code Online (Sandbox Code Playgroud)

注意唯一的区别是"max-height".这将允许窗口小部件调整到较小的高度但不超过200px

  • 因为你的解决方案.即使它是一个有效的我们正在讨论jQuery解决方案.当问题可以解决为jQuery时,为程序员提供CSS解决方案并不是一个好主意.最后,这只是掩盖了未解决问题的结果,如接受的答案.干得好! (4认同)
  • @SamBattat使用css编程问题是一个可怕的黑客攻击.想象一下试图调试它! (3认同)

SNa*_*Nag 19

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

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

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

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


小智 10

这是我用的

.ui-autocomplete { max-height: 200px; overflow-y: auto; overflow-x: hidden;}
Run Code Online (Sandbox Code Playgroud)

溢出自动,因此当它不应该时滚动条将不会显示.


Sam*_*Sam 5

我可以通过将以下内容添加到我的CSS文件中来解决此问题:

.ui-autocomplete {
    max-height: 200px;
    overflow-y: auto;
    overflow-x: hidden;
}
Run Code Online (Sandbox Code Playgroud)