使用Twitter Typeahead的Tokenfield for Bootstrap在建议中显示对象而不是值

时间:2015-09-26 20:10:42

标签: javascript jquery-ui twitter-typeahead bootstrap-tokenfield

我正在使用tokenfield for bootstrap和twitter typeahead,我能够做到这一点。

http://i.stack.imgur.com/dtFbj.png

我只希望显示值。

这是我的JS:

var engine = new Bloodhound({
        local: bloodhound_tag_data,
        datumTokenizer: function(d) {
            return Bloodhound.tokenizers.whitespace(d.value);
        },
        queryTokenizer: Bloodhound.tokenizers.whitespace
    });
    engine.initialize();
    $('#id_tags').tokenfield({
        typeahead: [null, { source: engine.ttAdapter() }]
    });

' bloodhound_tag_data'是一个带有' id'的对象列表。和'价值'密钥。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。在您的代码中,尝试使用以下内容替换typeahead: [null, { source: engine.ttAdapter() }]

typeahead: [null, {
   display: 'value',
   source: engine.ttAdapter()
}]

这解决了我的情况,我观察到与你的截图非常相似的东西。

某些背景信息:对于像我这样经验不足的人来说,typeahead.jsdisplay选项的文档似乎有点难以理解。它说(我认为与粗体相关的词语):

  

对于给定的建议,确定它的字符串表示形式。   在a之后设置输入控件的值时将使用此选项   建议被选中。可以是密钥字符串,也可以是函数   将建议对象转换为字符串。默认为字符串化   建议。

在这种情况下,'value'是数组bloodhound_tag_data中某个元素字段的键。

快乐的编码!

如果我的答案中的任何内容都可以改进,请添加评论并提出建设性意见。谢谢!