Я использовал более старую версию библиотеки 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;
}));
}