【发布时间】:2017-03-31 16:20:23
【问题描述】:
我正在使用 twitter typeahead 来提供从 webservice 返回的结果的下拉列表。我发现它只显示这些结果的一个子集;显然它禁止任何以相同的第一个单词开头的单词。
var $termInput = $("#someId");
var lookup = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url:/search/ + "%QUERY",
wildcard: '%QUERY'
}
});
lookup.initialize();
$termInput.typeahead(
{ hint: true, highlight: true },
{
source: lookup,
name: 'cases',
displayKey: 'id',
valueKey: 'id',
templates: {
empty: "<div class='omniboxresult nomatch'>No matching cases found</div>",
suggestion: function(data) {
console.log(data);
return "<div class='omniboxresult'><div class='caseName'>" + "hi " +data.text + "</div></div>";
}
}
}
);
HTML 是:
<input type=text" class="form-control" id="someId" value="" data-provider="typeahead" autocomplete="off">
使用网络选项卡我知道我的网络服务正在返回(当我输入“欧元”时):
[{"id":"1991003933","level":0,"text":"EUROPEAN COMMUNITY"},
{"id":"1971004125","level":0,"text":"EUROPEAN ECONOMIC COMMUNITY"},
{"id":"2011007673","level":0,"text":"EUROPEAN UNION"},
{"id":"2011000582","level":0,"text":"EUROPEAN UNION"}]
但我的输出中只得到以下内容:
如果我输入“e”,我会得到更多结果,例如未被抑制的“English”(但我仍然只得到一个以“EUROPEAN”开头的结果
为什么会发生这种情况,我怎样才能让它显示它收到的所有结果?
【问题讨论】:
-
这最终是一个预先输入的错误。请注意,有两个版本的预输入。原始的和废弃的twitter.github.io/typeahead.js 和维护的具有错误修复typeahead.js.org 的。第一个被遗弃的有这个错误,可能会永远
标签: javascript twitter-typeahead