我正在使用Twitter类型,但发现难以从mysql查询中划分结果。
我的json输出如下所示:{“id”:“1”,“name”:“Bravo”}
在当前状态下,typeahead中的结果显示了名称和id,我希望能够只显示名称,但输入的实际提交值为id。我的剧本很流畅:
<script type="text/javascript">
// Instantiate the Bloodhound suggestion engine
var suggestions = new Bloodhound({
datumTokenizer: function (datum) {
return Bloodhound.tokenizers.whitespace(datum.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: 'includes/livesearch.php?key=%QUERY',
wildcard: '%QUERY',
filter: function (name) {
// Map the remote source JSON array to a JavaScript object array
return $.map(name, function (name) {
return {
value: name
};
});
}
}
});
// Initialize the Bloodhound suggestion engine
suggestions.initialize();
// Instantiate the Typeahead UI
$('.typeahead').typeahead({
hint: true,
minLength: 2
}, {
limit: 7,
displayKey: 'value',
source: suggestions.ttAdapter(),
});
</script>
我非常欢迎任何帮助或建议如何实现这一目标。
谢谢!
答案 0 :(得分:1)
您可以创建一个对象来存储当前检索的值。在filter
选项Bloodhound
处将对象属性设置为name.name
,将值设置为name.id
。
要返回并仅显示已检索name
的{{1}}属性,请使用JSON
的{{1}}参数检查对象的属性名称。如果属性为index
,则返回$.map()
,否则返回"name"
。
使用{value:name}
事件使用null
typeahead:selected
的当前值作为属性参考,在<input type="hidden">
中设置<form>
元素的值先前存储的.typeahead
初始返回值的对象。设置将值存储到空对象的变量引用。
input
filter