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 .js 文件未更新

即使查询返回结果,Twitter-typeahead 也不显示任何结果

Twitter bootstrap Typeahead 填充href

以编程方式触发 typeahead.js 结果显示