我使用的是较旧版本的typeahead库,以下代码可以正常运行,但是会跳过搜索查询中没有单词的结果。
$('.to').typeahead({
minLength : 3,
hint: true,
dropdownFilter: "All",
source: function (query, result) {
$.ajax({
url: "citySearch.php",
data: 'query=' + query,
dataType: "json",
type: "POST",
success: function(data){
result($.map(data, function (item, i) {
if (item.TypeCode == 'C') {
return '<i class="fa fa-map-marker" aria-hidden="true"></i> ' + item.CityName + ', ' + item.CountryCode + ' (' + item.CityCode + ') ' + i;
} else if (item.TypeCode == 'A') {
return '<i class="fa fa-plane" aria-hidden="true" style="padding-left: 5px;"></i> ' + item.AirPortName + ' (' + item.AirPortCode + ') ' + i;
};
}));
}
});
},
afterSelect: function (item) {
var buffer = item.replace('<i class="fa fa-map-marker" aria-hidden="true"></i> ', '');
buffer = buffer.replace('<i class="fa fa-plane" aria-hidden="true" style="padding-left: 5px;"></i> ', '');
$('#to').val(buffer);
setTimeout(function(){
$('.depart-field').select();
$(".depart-field").datepicker('show');
}, 16);
}
});
如果我将搜索功能替换为以下内容,它将显示所有结果,而不会跳过其中的任何一个..我是否缺少任何查询?
success: function(data){
result($.map(data, function (item, i) {
return item.CityName + item.AirPortName;
}));
}