我有一个脚本,它允许显示谷歌的建议。问题是,即使输入值与可用数据不同,它仍然显示列表,我宁愿将其关闭。看看这个小提琴:JsFiddle关闭jQuery的自动完成,如果查询不像数据
键入一个字母比'cjfsdkcrdvhcxrbsks'一些垃圾你会看到列表仍然显示。那么如果价值与建议不符,我该如何关闭它?
我有一个脚本,它允许显示谷歌的建议。问题是,即使输入值与可用数据不同,它仍然显示列表,我宁愿将其关闭。看看这个小提琴:JsFiddle关闭jQuery的自动完成,如果查询不像数据
键入一个字母比'cjfsdkcrdvhcxrbsks'一些垃圾你会看到列表仍然显示。那么如果价值与建议不符,我该如何关闭它?
如果您在控制台中查看,则实际发生错误。
当搜索没有返回结果时,对象data.query.results.toplevel
为空。由于您没有检查,因此尝试访问data.query.results.toplevel.CompleteSuggestion
时出现异常,菜单不能简单地关闭,因为代码刚停止工作。
检查null为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
};
}));
}
success: function(data) {
if (typeof data == 'string') data = $.parseJSON(data);
if (data.query.results.toplevel == null){
$(this).autocomplete("close"); return;
}
刚刚查了一下使用Firebug的页面的回报,这应该工作,希望
我改变了小提琴更新的链接。 – Youss 2012-03-10 11:59:24