使用 Bootstrap 的 Typeahead displayKey 函数返回值

Posted

技术标签:

【中文标题】使用 Bootstrap 的 Typeahead displayKey 函数返回值【英文标题】:Return values with Bootstrap's Typeahead displayKey Function 【发布时间】:2015-10-16 00:16:15 【问题描述】:

我在 Bootstrap 的 Typeahead 中为建议定义了一个自定义模板,如下所述。但是,当我选择任何建议时,我只会在输入中得到 country 名称。由于我在 displayKey 参数中传递了 country。无论如何我可以在输入中选择 countrycity 名称(与模板中相同)?

这里是 JsFiddle:http://jsfiddle.net/geekowls/agrg3xhj/

我还阅读了 Typeahead 网站上的示例。但没有找到任何相关的东西。我只知道displayKey参数可以带一个函数。

$(document).ready(function () 

                        var dataSource = new Bloodhound(
                            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('country', 'city'),
                            queryTokenizer: Bloodhound.tokenizers.whitespace,
                            identify: function (obj)  return obj.country; ,
                            prefetch: "../Data/1.json"

                        );

                        function dataSourceS(q, sync) 
                                dataSource.search(q, sync);          
                        

                        $('.typeahead').typeahead( 
                            minLength: 0,
                            highlight: true
                        , 
                            name: 'countries',
                            displayKey: 'country',
                            source: dataSourceS,
                            templates: 
                                empty: [
                                    '<div class="empty">No Matches Found</div>'
                                ].join('\n'),
                                suggestion: function (data)
                                    return '<div>' + data.country + ' – ' + data.city + '</div>'
                                
                            
                        
                        );
);

这是 Json 文件。

[
    
    "country": "Holland",
    "city": "Amsterdam"
    ,
    
    "country": "Belgium",
    "city": "Brussel"
    ,
    
    "country": "Germany",
    "city": "Berlin"
    ,
    
    "country": "France",
    "city": "Paris"
    
]

【问题讨论】:

【参考方案1】:

函数很简单。只需要将 display 参数更新为:

display: function(item) return item.country+'–'+item.city

还在这里更新了小提琴上的代码: http://jsfiddle.net/geekowls/agrg3xhj/1/

干杯!

【讨论】:

以上是关于使用 Bootstrap 的 Typeahead displayKey 函数返回值的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 3 typeahead.js - 通过 typeahead val 的一部分进行查询

混合 Typeahead.js 和 Bootstrap 3

如何在 Bootstrap 标签输入中使用 typeahead 选项

ui.bootstrap.typeahead:如何将 $http 与 debounce 结合使用

使用 Bootstrap 的 Typeahead displayKey 函数返回值

使用 Bootstrap 3 在 Twitter Typeahead 上的 CSS 问题