如果查询不像数据,则关闭jquery自动完成

时间:2012-03-10 11:57:16

标签: jquery jquery-ui jsonp jquery-ui-autocomplete

我有一个允许显示Google建议的脚本。问题是,即使输入值与可用数据不同,它仍然显示列表,我宁愿关闭它。看看这个小提琴:JsFiddle

键入一个字母,而不是像'cjfsdkcrdvhcxrbsks'那样的垃圾。你会看到列表仍在显示。那么如果值与建议不符,我该如何关闭呢?

2 个答案:

答案 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返回的内容,这应该可行,希望