我正在使用带有ajax调用的twitter typeahead(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' ]
但是出现的唯一建议是“所有要添加到g1的新内容”,当所有4个都应显示时。如果我继续输入“ new to d”,则会出现“ new to drag”的建议。如果我只输入“ new”,那么我将得到包括以上大部分内容在内的完整5条建议!
如果我改变了,var limit = 5;那么ajax调用最多只会返回5个结果,并且直到我收到“ d的新消息”时才显示建议列表,即“ new”不给出任何建议。这使我认为与ajax结果的数量小于或等于预输入限制有关。为了验证我的理论,我将5个无意义的项目放入了json.options数组中,因此总会有5个以上的结果,并且全部按预期工作- 只有我不想总是在列表的底部有无意义的建议。任何建议,不胜感激!
var limit = 5;
我有一个类似的问题。它看起来像是Typeahead 0.11.1版本中的错误。在此处尝试解决方案:https : //github.com/twitter/typeahead.js/pull/1212 ,看看是否可行。
具体的变化是这样的:https : //github.com/per- nilsson/typeahead.js/commit/387290b1e70be0052c6dd9be84069f55d54a7ce7