我正在使用具有ajax调用的twitter typehead(typeahead.js 0.11.1)插件,它有效,但是当ajax结果的数量小于限制(默认限制为5,我没有指定)时会提供一些奇怪的行为在打头打电话).这是我如何设置:
var limit = 6; populate_typeahead = function() { $('.typeahead').typeahead('destroy'); $('.typeahead').typeahead({ hint: true,highlight: true,minLength: 1 },{ source: ajaxquery,}); }; var ajaxquery = function(query,syncresults,process) { return $.ajax({ url: $(this)[0].$el.closest('span.twitter-typeahead').find('input:last').data('mahiFindByPath'),type: 'get',data: {search_string: query,limit: limit},dataType: 'json',success: function(json) { return typeof json.options == 'undefined' ? false : process(json.options); } }); };
导致我问题的实际例子是在输入框中输入“new to”,该框返回以下json.options:
[ 'new to add to g1','new to be in grp1 then remove from grp','new to drag','new to assign' ]
但是,当所有4都应该显示时,唯一出现的建议是“新添加到g1”.如果我继续输入“new to d”,那么“new to drag”的提示就出现了.如果我只输入“新”,那么我会得到一个完整的5个建议,包括上面的大部分内容!
如果我更改var limit = 5;那么ajax通话只能返回最多5个结果,并且建议列表一直没有出现,直到我得到“新的”为止,即“新”不提供任何建议.这使我认为这是与aaax结果的数量小于或等于前导限制.为了测试我的理论,我将5个无意义的项目推送到json.options数组中,所以总是有超过5个结果,它都按预期工作 – 只有我不希望在我的列表底部总是有无意义的建议.任何意见非常感谢!
我也有类似的问题.它看起来像是Typeahead版本0.11.1中的一个错误.在这里尝试解决方案:
https://github.com/twitter/typeahead.js/pull/1212
看看是否有效.
https://github.com/twitter/typeahead.js/pull/1212
看看是否有效.
具体的变化是这样的:
https://github.com/per-nilsson/typeahead.js/commit/387290b1e70be0052c6dd9be84069f55d54a7ce7