使用typeahead.js从themoviedb中提取更多信息,并将其放入其他输入中
Extract more info from themoviedb using typeahead.js and put it in other inputs
我使用typeahead.js从moviedb api获取电影信息。当用户键入电影标题时,我需要获得电影的年份和电影的ID,以自动添加到其他输入中。
因此,当用户使用输入的电影标题并点击建议的标题时,它会自动将年份和电影id添加到其他输入
HTML代码
<input class="typeahead" placeholder="Movie Title Here"><br>
<input class="year" placeholder="Year Here">
<input class="id" placeholder="Year ID">
JS代码
靠近返回(在第12行),有我需要转移到其他输入的信息
var movies = new Bloodhound({
datumTokenizer: function (datum) {
return Bloodhound.tokenizers.whitespace(datum.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
limit: 10,
remote: {
url: 'http://api.themoviedb.org/3/search/movie?api_key=470fd2ec8853e25d2f8d86f685d2270e&query=%QUERY&search_type=ngram',
filter: function (movies) {
// Map the remote source JSON array to a JavaScript array
return $.map(movies.results, function (movie) {
return {
id: movie.id,
value: movie.original_title,
year: (movie.release_date.substr(0,4) ? movie.release_date.substr(0,4) : '')
};
});
}
}
});
// Initialize the Bloodhound suggestion engine
movies.initialize();
// Instantiate the Typeahead UI
$('.typeahead').typeahead({
hint: true,
highlight: true
}, {
displayKey: 'value',
source: movies.ttAdapter(),
templates: {
empty: [
'<div class="empty-message">',
'unable to find any Best Picture winners that match the current query',
'</div>'
].join(''n'),
suggestion: Handlebars.compile('<p><strong>{{value}}</strong> – {{year}}</p>')
}
});
以下是我在jsfiddle上运行的代码,供您自己尝试:
http://jsfiddle.net/Jim_Toth/ss8L24x8/
我在这里添加了一种自动填充相关输入控件的方法:
http://jsfiddle.net/Fresh/cmq80qx3/
实现自动填充的代码的关键部分是:
bind("typeahead:selected", function (obj, datum, name) {
$('.year').val(datum.year);
$('.id').val(datum.id);
});
这段代码指定了在选择typeahead值时应该调用的函数,在这种情况下,它适当地设置了年份和id输入的值。
相关文章:
- JQuery:当其他输入字段的值发生更改时更改值
- 输入类型=文件验证停止其他输入类型验证
- 如何根据其他日期的输入更新日期
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 单击列表中的引导输入按钮将禁用其他按钮
- 在维护输入内容的同时添加其他字段
- 如果所有其他元素都填写在AngularJS中,如何动态添加新的输入元素
- 在其他文本输入字段中输入文本时启用复选框
- 使用其他输入值自动填充输入
- 创建一个计算值数组,该数组绑定到AngularJS中的其他输入
- 更新其中一个字段时刷新其他输入字段.使用Angularjs(附Plunker)
- 停止jQuery表单验证重置由其他JavaScript填充的typeahead.js输入字段
- 根据选择选项启用/禁用其他输入
- 如果我用javascript隐藏了一个文本输入元素,那么其他javascript函数仍然可以访问输入到其中的值
- 选择列表框以更改其他输入
- 如果选择'其他'然后填充输入字段
- 输入其他相关字段时填充一个字段
- 通过在数组中输入其他值,从 JSON 数据中获取其他值
- YUI数据表块在页面上输入其他组件的事件