我尝试使用typeahead.js实现一个搜索框,用户可以通过点击typeahead中的订单项或使用键盘向上和向下选择条目并通过输入键导航到条目来导航到条目。 / p>
这是我的HTML
<div id="remote">
<input class="typeahead" type="text" placeholder="Search for people">
</div>
这是我的javascript
$(document).ready(function() {
var castDirectors = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: '../api/v1/search/people_typeahead',
remote: '../api/v1/search/people_typeahead?q=%QUERY',
dupDetector: function(remoteMatch, localMatch) {
return remoteMatch.value === localMatch.value;
}
});
castDirectors.initialize();
$('#remote .typeahead').typeahead(null, {
name: 'cast-directors',
displayKey: 'value',
source: castDirectors.ttAdapter(),
templates: {
empty: [
'<div class="empty-message">',
'no matching names',
'</div>'
].join('\n'),
suggestion: Handlebars.compile('<p><a id="typeahead" href="{{link}}">{{value}}</a></p>')
}
});
});
使用输入类型=&#34; text&#34;,如果我使用键盘导航并使用回车键选择,则只填充文本框。我希望输入键等同于点击订单项。我需要改变什么?
答案 0 :(得分:4)
管理将以下内容添加到我的javascript中并且效果很好
$('#remote .typeahead').on('typeahead:selected', function (e, datum) {
window.location.href = datum.link
});
答案 1 :(得分:1)
请勿在物品内放置href。但在你的预先输入中使用如下所示的选择功能:
select: function( event, key ) {
window.location.href ="Your-Key-related-url-here";
}
它为我工作。让我知道任何进一步的问题。