我第一次使用 twitter typeahead.js,我试图做一些我认为很简单但我不知道如何做的事情。我希望通过预先输入的建议列表结果将用户转发到特定的 URL。我想使用多个数据集和要存储在 JSON 文件中的 url。
例如(使用改编的 typeahead.js 示例代码):
CSS:
#multiple-datasets .league-name {
margin: 0 20px 5px 20px;
padding: 3px 0;
border-bottom: 1px solid #ccc;
}
HTML:
<div id="multiple-datasets">
<input class="typeahead" type="text" placeholder="NBA and NHL teams">
</div>
JS:
var nbaTeams = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: '../data/nba.json'
});
var nhlTeams = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: '../data/nhl.json'
});
nbaTeams.initialize();
nhlTeams.initialize();
$('#multiple-datasets .typeahead').typeahead({
highlight: true
},
{
name: 'nba-teams',
displayKey: 'team',
source: nbaTeams.ttAdapter(),
templates: {
header: '<h3 class="league-name">NBA Teams</h3>'
}
},
{
name: 'nhl-teams',
displayKey: 'team',
source: nhlTeams.ttAdapter(),
templates: {
header: '<h3 class="league-name">NHL Teams</h3>'
}
});
NHL.JSON:
[{ "team": "Dallas Stars", "url": "stars.html" },{ "team": "Los Angeles Kings", "url": "kings.html" },{ "team": "Phoenix Coyotes", "url": "coyotes.html" },{ "team": "San Jose Sharks", "url": "sharks.html" }]
NBA.JSON:
[{ "team": "Boston Celtics", "url": "celtics.html" },{ "team": "Dallas Mavericks", "url": "mavericks.html" },{ "team": "Brooklyn Nets", "url": "nets.html" },{ "team": "Houston Rockets", "url": "rockets.html" }
因此,如果用户键入“rockets”,那么他们可以单击列表中的“Houston Rockets”建议,并将被定向到rockets.html。我不确定如何让 javascript 将建议转换为 JSON 中的相应链接。
任何帮助将不胜感激。
谢谢