Вы действительно получили ошибку, если взглянули на консоль.
Когда поиск не возвращает результатов, объект data.query.results.toplevel
равен нулю . Поскольку вы не проверяете это, при попытке доступа к data.query.results.toplevel.CompleteSuggestion
возникает исключение, и меню не закрывается просто потому, что код просто перестает работать.
Проверьте наличие нуля для data.query.results.toplevel
и, если оно равно нулю, используйте response([]);
, чтобы закрыть меню:
success: function(data) {
if (typeof data == 'string') {
data = $.parseJSON(data);
}
if (data.query.results.toplevel === null) {
// passing an empty array to response callback closes the menu
response([]);
return;
}
response(
$.map(
data.query.results.toplevel.CompleteSuggestion,
function(item) {
return {
label: item.suggestion.data,
value: item.suggestion.data
};
}));
}
DEMO