我有一个允许显示Google建议的脚本。问题是,即使输入值与可用数据不同,它仍然显示列表,我宁愿关闭它。看看这个小提琴:JsFiddle
键入一个字母,而不是像'cjfsdkcrdvhcxrbsks'那样的垃圾。你会看到列表仍在显示。那么如果值与建议不符,我该如何关闭呢?
答案 0 :(得分:2)
如果您在控制台中查看,实际上会出现错误。
如果搜索未返回结果,对象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 强>
答案 1 :(得分:1)
success: function(data) {
if (typeof data == 'string') data = $.parseJSON(data);
if (data.query.results.toplevel == null){
$(this).autocomplete("close"); return;
}
刚刚检查了页面使用firebug返回的内容,这应该可行,希望