如果查询与数据不同,请关闭jquery自动完成
我有一个脚本,可以显示谷歌的建议。问题是,即使输入值与可用数据不同,它仍然显示列表,我宁愿将其关闭。看看这把小提琴:如果查询与数据不同,请关闭jquery自动完成,jquery,jquery-ui,jsonp,jquery-ui-autocomplete,Jquery,Jquery Ui,Jsonp,Jquery Ui Autocomplete,我有一个脚本,可以显示谷歌的建议。问题是,即使输入值与可用数据不同,它仍然显示列表,我宁愿将其关闭。看看这把小提琴: 键入一个字母,而不是像“cjfsdkcrdvhcxrbsks”这样的垃圾,您将看到列表仍在显示。那么,如果值与建议不匹配,如何关闭它 如果您在控制台中查看,实际上会出现一个错误 当搜索不返回结果时,对象data.query.results.toplevel为null。由于您没有进行检查,因此在尝试访问data.query.results.toplevel.CompleteSugg
键入一个字母,而不是像“cjfsdkcrdvhcxrbsks”这样的垃圾,您将看到列表仍在显示。那么,如果值与建议不匹配,如何关闭它 如果您在控制台中查看,实际上会出现一个错误 当搜索不返回结果时,对象
data.query.results.toplevel
为null。由于您没有进行检查,因此在尝试访问data.query.results.toplevel.CompleteSuggestion
时会出现异常,并且菜单不会因为代码停止工作而关闭
检查data.query.results.toplevel是否为null,如果为null,则使用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
};
}));
}
刚刚用firebug检查了页面返回的内容,这应该可以工作,希望我更改了小提琴并更新了链接。
success: function(data) {
if (typeof data == 'string') data = $.parseJSON(data);
if (data.query.results.toplevel == null){
$(this).autocomplete("close"); return;
}