twitter typeahead ajax结果未全部显示
Posted
技术标签:
【中文标题】twitter typeahead ajax结果未全部显示【英文标题】:twitter typeahead ajax results not all shown 【发布时间】: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 个结果,而且一切都按预期工作——只是我不想总是在我的列表底部有无意义的建议。任何建议都非常感谢!
【问题讨论】:
【参考方案1】:我遇到了类似的问题。它看起来像是 Typeahead 0.11.1 版中的一个错误。在这里尝试解决方案: https://github.com/twitter/typeahead.js/pull/1212 看看这是否有效。
具体变化是这样的: https://github.com/per-nilsson/typeahead.js/commit/387290b1e70be0052c6dd9be84069f55d54a7ce7
【讨论】:
嗨。我想我在 Typeahead 的 0.11.1 版本中遇到了同样的问题。并非从 ajax 调用返回的所有结果都显示在建议列表中。您提供的链接似乎不再有效。您能否指出我可以在哪里找到解决此问题的方法?谢谢。 抱歉,Github 好像宕机了几分钟。现在有你的修复,它的工作原理!你是明星。非常感谢。【参考方案2】:听从奥古斯塔夫的建议。我正在使用 twitter-typeahead-rails gem。我创建了一个 fork 并将版本提升到 1.0.1,它为我修复了这个可能相同或相关的错误。
在我的例子中,我有两个来自远程源的结果,但只有一个用于建议。
我做了一个拉取请求 - 但不确定它是否会被合并。但是,对于可能会看到这种情况的未来 Rails 用户,请使用我的 fork,特别是我声明的分支。
添加到您的gemfile
gem 'twitter-typeahead-rails', :git => "git://github.com/pitops/twitter-typeahead-rails.git" , :branch => "bump_version_to_1.0.1"
【讨论】:
以上是关于twitter typeahead ajax结果未全部显示的主要内容,如果未能解决你的问题,请参考以下文章
twitter bootstrap typeahead ajax示例
twitter bootstrap 3.0 typeahead ajax示例
即使查询返回结果,Twitter-typeahead 也不显示任何结果