Twitter Typeahead自定义选择逻辑

时间:2018-12-19 08:47:56

标签: javascript typeahead bootstrap-typeahead twitter-typeahead

我正在使用Twitter Typeahead生成建议。我的Ajax请求返回一个复杂的数据类型,该数据类型很好地显示在“建议”部分中。当用户选择一个建议时,我想将项目的ID保存到隐藏字段中,并将项目的名称+颜色保存到输入字段中。正如我在文档中阅读的那样,我必须重写Typeahead构造函数中的display方法(或JS中所谓的任何方法),就像这样:

display: function(item) {
   $("#idhiddenfield").val(item.id);
   return item.name + " " + item.color;
}

这有两个问题:首先,它在建议出现时被触发,而不是选择它( display 对我来说似乎很奇怪,但是文档认为这是正确的方法,在我看来应该是select或其他名称),此外,如果我离开该字段并单击它,它会引发Ajax调用,该调用显示“未找到结果”(因为名称+颜色组合在服务器端不可查询),这肯定是不好。

有人可以帮我解决这两个问题吗?

1 个答案:

答案 0 :(得分:0)

我认为您在这里误解了文档。显示功能是确定建议中显示的字符串。

您可以通过typeahead:select元素上的input-事件来对建议进行选择。例如:

$("#typeAheadInput").on("typeahead:select", function(event){ //Your logic here});

我建议您将逻辑移至命名函数,而不要使用内联匿名函数以提高可读性。

$("#typeAheadInput").on("typeahead:select", yourNamedFunction);