使用typeahead返回所有远程匹配,无需额外过滤

时间:2016-06-03 16:04:33

标签: javascript typeahead bloodhound

似乎找不到使用typeahead禁用过滤的方法。基本上我只需要自动完成(或者说是下拉搜索提示)功能。我正在进行邮政编码搜索,结果邮政编码不一定与查询的邮政编码匹配。如何让它显示所有匹配而不再对它们进行额外过滤?

以下是我的代码:

var dealers = new Bloodhound({
    datumTokenizer: function (d) {
        return Bloodhound.tokenizers.whitespace(d);
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
        url: '/form/find-dealer?postalCode=',
        prepare: function (query, settings) {
            settings.url += encodeURIComponent(query);
            settings.type = 'POST';
            settings.contentType = "application/json; charset=UTF-8";
            return settings;
       }
    }
});

$('input[name=postalCode]').typeahead({
    minLength: 3
}, {
    name: 'dealers',
    display: function (data) {
        return data.title;
    },
    source: dealers.ttAdapter()
});

注意:我知道以这种方式进行邮政编码搜索似乎有点尴尬,但设计师的目的是让用户可以通过经销商名称和邮政编码互换搜索。

其他信息: typeahead.bundle.js - v0.11.1

3 个答案:

答案 0 :(得分:1)

似乎没有任何(匹配)查询显示所有内容: https://github.com/twitter/typeahead.js/issues/1308

虽然有些人尝试使用minlength = 0,但是: https://github.com/twitter/typeahead.js/issues/1251

它看起来有可能在旧版本中: https://github.com/twitter/typeahead.js/pull/719

顺便说一下插件已不再开发且手册不完整。在这个分支上可以找到一个改进的:https://github.com/corejavascript/typeahead.js/tree/master/doc

话虽如此,你可能会更好地使用另一个autosuggest,或者像select2这样的插件,它会默认显示结果,并且可以使用外部源。

答案 1 :(得分:1)

如果您想向AJAX&发送查询从您的数据库获取数据&为typehead的结果添加所有JSON结果(你有一个带数据库的数据过滤器&用AJAX和JSON发送干净的数据,但是类型头有额外的过滤而不显示任何或你的一些数据),你必须这样做:

打开bootstrap-typeahead.js&发现

slider.setThumbImage(UIImage.init(named: "dot"), for: .highlighted)

并将其替换为:

item.toLowerCase().indexOf(this.query.toLowerCase())

您是否可以显示Ajax JSON的所有结果......

答案 2 :(得分:0)

不漂亮,因为该库已经分叉并且不再受创建者的支持,但是这个修复程序为我做了https://github.com/twitter/typeahead.js/pull/1212。基本上,当处于远程模式时,它会返回所有匹配,这实际上是我所看到的正确行为。

此SO主题帮助twitter typeahead ajax results not all shown