我已经设置了 typeahead.js 版本 0.11.1 以从 geobytes API 中提取城市。这是一个可以做到这一点的代码笔:
http://codepen.io/jeremeevans/pen/OVPram
var cities = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace(),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: "http://gd.geobytes.com/AutoCompleteCity?callback=?&template=<geobytes%20city>,%20<geobytes%20code>&filter=US&q=%QUERY",
wildcard: "%QUERY",
dataType: "jsonp",
transform: function (response) {
return response;
}
},
limit: 10
});
$("#city").typeahead({
minLength: 3,
highlight: true,
hint: true
}, {
name: "US-Cities",
source: cities
});
我看到的奇怪行为是,当我开始输入 Seattle 时,当我到达“Seat”时,它只列出两个结果,“Seaton, IL”和“Seatonville, IL”。我知道 API 返回了很多结果,包括“西雅图,华盛顿州”。此外,如果您开始搜索“埃弗雷特”,所有结果都会在“埃弗雷特”处消失并保持不可见状态,直到您到达“埃弗雷特”,此时它会显示“埃弗雷特,马萨诸塞州”和“埃弗雷特,宾夕法尼亚州”,但不会显示“埃弗雷特” ,华盛顿州”。
有关选项的文档以及与版本 0.11.1 相关的文档非常糟糕 https://github.com/twitter/typeahead.js - 我真的很感激关于如何使用它而不是让它显示结果的一些见解。
最佳答案
我遇到过一些元素丢失的情况。 我所做的是将 typeahead 选项限制设置为 10。 它对我有用。
关于javascript - 来自 typeahead.js 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29925753/