我使用twitter (typeahead.js 0.11.1)插件进行了ajax调用,但当ajax结果的数量少于限制(默认限制为5,而我在typeahead调用中没有指定)时,会给出一些奇怪的行为。下面是我是如何设置的:
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“,该输入框返回以下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‘,那么就会出现’新拖动‘的建议。如果我只输入‘新’,那么我会得到一个完整的5个建议,包括以上大多数!
如果我更改了var limit = 5;
,那么ajax调用最多只返回5个结果,建议列表在我得到'new‘之前根本不会出现,也就是说,’new‘没有给出任何建议。这使我认为这与ajax结果的数量少于或等于提前输入限制有关。为了验证我的理论,我将5个无意义的条目推入json.options数组中,因此总有5个以上的结果,所有结果都如预期的那样工作--只是我不想总是在列表的底部有一些毫无意义的建议。任何建议都非常感谢!
发布于 2015-06-27 18:46:18
我也有过类似的问题。它看起来像是一个错误,在0.11.1版的Typeahead中。试试这里的解决方案:https://github.com/twitter/typeahead.js/pull/1212,看看它是否有效。
具体的更改如下:https://github.com/per-nilsson/typeahead.js/commit/387290b1e70be0052c6dd9be84069f55d54a7ce7
发布于 2016-12-11 13:40:13
听从了古斯塔夫的建议。我使用的是推特-typeahead创业板。我创建了一个叉,并将版本设置为1.0.1,这为我修复了这个错误,这个错误可能与此相同或相关。
在我的例子中,我有两个来自远程源的结果,但这两个结果中只有一个被用于建议。
我做了一个拉请求-但不确定它是否会被合并。但是,对于将来可能看到这种情况的rails用户,可以使用我的叉子,特别是分支,我声明。
添加到您的数据库文件中
gem 'twitter-typeahead-rails', :git => "git://github.com/pitops/twitter-typeahead-rails.git" , :branch => "bump_version_to_1.0.1"
https://stackoverflow.com/questions/30798859
复制