Javascript Typeahead始终最多只显示5条建议
我有下面的代码使用Typeahead.js提供建议。我没有关于代码的主要问题,因为它工作得很好 我面临的一个小问题是,在任何给定的时间,我只看到5条建议,即使远程URL中有5条以上的建议Javascript Typeahead始终最多只显示5条建议,javascript,jquery,limit,typeahead.js,twitter-typeahead,Javascript,Jquery,Limit,Typeahead.js,Twitter Typeahead,我有下面的代码使用Typeahead.js提供建议。我没有关于代码的主要问题,因为它工作得很好 我面临的一个小问题是,在任何给定的时间,我只看到5条建议,即使远程URL中有5条以上的建议 var isearch = new Bloodhound({ datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.value); }, queryTokenizer: Blo
var isearch = new Bloodhound({
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: "http://localhost/search/get-data/%QUERY"
});
isearch.initialize();
$("#search_box .typeahead").typeahead(null,{ name: "isearch",
displayKey: "value",
source: isearch.ttAdapter(),
templates: {
suggestion: Handlebars.compile("{{value}}")
}
});
我希望有更多的建议,应该有一个滚动条供用户查看。在Typeahead版本0.11.1中: 在typeahead对象实例化期间指定“limit”,以设置要显示的建议数量,例如
// Instantiate the Typeahead UI
$('.typeahead').typeahead(null, {
limit: 10, // This controls the number of suggestions displayed
displayKey: 'value',
source: movies
});
请参见此处的工作示例:
在Typeahead版本0.10.4中 猎犬建议引擎的“限制”选项的默认值为5(即) 当您实例化您的猎犬对象时,您可以通过指定所需的值来增加限制。例如,要指定10的限制,请执行以下操作:
var isearch = new Bloodhound({
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: "http://localhost/search/get-data/%QUERY",
limit: 10
});
此处可以找到限制设置为10的Typeahead实例的示例:
除了像@Fresh建议的那样增加对侦探犬实例化的限制外,我还使用CSS进行了以下样式设计,以获得所需的结果
.tt-suggestions {
min-height: 300px;
max-height: 400px;
overflow-y: auto;
}
我所做的是将容器强制为400px,以便在有更多结果时获得一个滚动条。我希望采用这种方法,因为我不希望屏幕占据更多区域。即使有100个结果,这也会起作用。。并且不会阻塞屏幕。在我的例子中,“限制”选项起作用,但方式不同。我不得不在typeahead上设置限制选项,而不是Hound。我正在发布我的案例,以便它可以帮助某人
bloodhoundSuggestionEngine = new Bloodhound({
datumTokenizer : function(d) {
return Bloodhound.tokenizers.whitespace(d.key);
},
queryTokenizer : Bloodhound.tokenizers.whitespace,
local : myOptions
});
$("#myinputbox").typeahead({
minLength : 3,
highlight : true
}, {
displayKey : 'key',
source : bloodhoundSuggestionEngine.ttAdapter(),
limit: 10
});
@阿图尔的回答肯定对我有帮助,但我和猎犬还有另一个相关的问题。我使用的是遥控器,我不会得到我知道遥控器会起作用的结果。这是因为它在猎犬的缓存中找到了足够近的东西,没有向遥控器索要数据。因此,通过将“猎犬”上的
fulfund
选项从默认值猛增到100,它总是要求遥控器提供更多数据 另一种方法可能是直接更改Typeahead类中的默认值
$.fn.typeahead.defaults={
...
项目:8,
…}
到
项:在Typeahead版本0.11.1中的“全部”:
在typeahead对象的实例化过程中指定“limit”,以设置要显示的建议数量,但确保它比源返回的最大数量少一个
// Instantiate the Typeahead UI
$('.typeahead').typeahead(null, {
limit: 9, // one less than your return value. This controls the number of suggestions displayed
displayKey: 'value',
source: movies
});
请参见谢谢您的链接。我已经看过了。我想要的是有一个滚动条时,有更多的项目。总限制=10,显示=5项。对于剩下的项目,我们应该使用滚动条。typeahead无法实现您所期望的。我的回答将允许您增加计数,这是您目前实现此目标的唯一方法。好的,很高兴您找到了解决方案。您应该回答自己的问题,以帮助其他有相同问题的人。@CJRamki您可以获得远程数据集的大小,然后在实例化“猎犬”时使用此值。但是,您为什么要这样做,因为返回所有数据会降低页面速度,因为您需要检索所有数据?版本0.11.1-limit
不是侦探犬的选项<代码>足够
是一个选项,但这是用于触发远程
以回填建议的。如果您使用的是猎犬+TT,那么在TT'dataset`选项中使用limit
来控制建议IIRC,因为0.11的猎犬,limit作为一个选项被删除。我认为这只是Typeahead上的一个选项似乎他们一直在更改它,对于第一个空值,是为我做的。谢谢