【发布时间】:2015-08-28 05:09:49
【问题描述】:
我正在使用带有 ajax 调用的 twitter typeahead (typeahead.js 0.11.1) 插件,它可以工作,但是当 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 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”建议。如果我只输入“新”,那么我会收到完整的 5 条建议,包括上述大部分!
如果我更改 var limit = 5;,那么 ajax 调用最多只会返回 5 个结果,并且建议列表根本不会出现,直到我得到“新到 d”,即“新”没有给出任何建议。这让我认为这与 ajax 结果的数量小于或等于预先输入的限制有关。为了测试我的理论,我将 5 个无意义的项目推入 json.options 数组,所以总是有超过 5 个结果,而且一切都按预期工作——只是我不想总是在我的列表底部有无意义的建议。任何建议都非常感谢!
【问题讨论】:
标签: ajax json twitter typeahead.js