小编典典

twitter typeahead ajax结果未全部显示

ajax

我正在使用带有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个以上的结果,并且全部按预期工作-
只有我不想总是在列表的底部有无意义的建议。任何建议,不胜感激!


阅读 238

收藏
2020-07-26

共1个答案

小编典典

我有一个类似的问题。它看起来像是Typeahead
0.11.1版本中的错误。在此处尝试解决方案:https
:
//github.com/twitter/typeahead.js/pull/1212
,看看是否可行。

具体的变化是这样的:https :
//github.com/per-
nilsson/typeahead.js/commit/387290b1e70be0052c6dd9be84069f55d54a7ce7

2020-07-26