我正在将我的应用程序迁移到twitter-bootstrap,我想用typeahead.js替换我的jquery-ui自动完成。
最好使用twitter-bootstrap中嵌入的功能,但如果需要,我可以使用额外的typeahead插件。
我的问题是我无法重现当前行为,特别是在没有结果的情况下。
你会怎么做?
$("#search").autocomplete({
source : myUrl,
delay : 100,
minLength : 2,
select : function(event, ui) {
// do whatever i want with the selected item
},
response : function(event, ui) {
if (ui.content.length === 0) {
ui.content.push({
label : "No result",
value : customValue
});
}
}
});
基本上,如果没有结果,我想在组件中显示自定义消息。
谢谢!
答案 0 :(得分:4)
向Bootstrap typeahead的迁移看起来像......
$('.typeahead').typeahead({
minLength:2,
updater: function (item) {
/* do whatever you want with the selected item */
},
source: function (typeahead, query) {
/* put your ajax call here..
return $.get('/typeahead', { query: query }, function (data) {
return typeahead.process(data);
});
*/
}
});
编辑:
我已将演示更新为包含分拣机和荧光笔。我想这会得到你想要的结果..
sorter: function(items) {
if (items.length == 0) {
var noResult = new Object();
items.push(noResult);
}
return items;
},
highlighter: function(item) {
if (dataSource.indexOf(item) == -1) {
return "<span>No Match Found.</span>";
}
else {
return "<span>"+item+"</span>";
}
},
我不认为typeahead有相当于延迟,但是有一些jquery解决方法。
答案 1 :(得分:3)
使用最新版本的Typeahead.js(0.10),现在可以指定一个空模板,以便在找不到结果时显示。
$('.typeahead').typeahead({
hint: true,
highlight: true,
minLength: 2
},{
name: 'examples',
source: examples.ttAdapter(),
templates: {
empty: [
'<div class="empty-message">',
'unable to find any results that match the current query',
'</div>'
].join('\n')
}
});