【问题标题】:Jquery Autocomplete - no result messageJquery Autocomplete - 没有结果消息
【发布时间】:2011-12-29 01:43:47
【问题描述】:

如果没有找到结果,我希望自动完成在其下拉列表中显示“无结果”

我的情况就像JQuery默认的例子。

$(function() {
    var availableTags = [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "Scheme"
        ];
    $( "#tags" ).autocomplete({
        source: availableTags
    });
});

感谢您的帮助。

【问题讨论】:

标签: jquery html jquery-ui jquery-ui-autocomplete


【解决方案1】:

您可以通过以下方式完成此操作:

$(function() {
    var availableTags = [ /* snip */];  
    var NoResultsLabel = "No Results";

    $("#tags").autocomplete({
        source: function(request, response) {
            var results = $.ui.autocomplete.filter(availableTags, request.term);

            if (!results.length) {
                results = [NoResultsLabel];
            }

            response(results);
        },
        select: function (event, ui) {
            if (ui.item.label === NoResultsLabel) {
                event.preventDefault();
            }
        },
        focus: function (event, ui) {
            if (ui.item.label === NoResultsLabel) {
                event.preventDefault();
            }
        }
    });
});

基本上,您需要将函数引用作为source 提供给自动完成功能。在该函数内部,您可以使用相同的实用函数 ($.ui.autocomplete.filter) 过滤结果。然后可以查看结果数组是否为空。如果是,您可以在结果列表中添加默认消息。

我指定的其他两个选项会阻止选择或聚焦 No Results 选项。

示例: http://jsfiddle.net/er6LF/

【讨论】:

  • 完美!谢谢安德鲁。我现在可以回家了。
【解决方案2】:

这个小提琴有一个实用的例子,你有:http://jsfiddle.net/andrewodri/wAg4g/

我改了这个:

$("#tags").autocomplete({source: availableTags});

至此:

$("#tags").autocomplete(availableTags);

您可以看到它在最新版本的 jQuery 上运行,并且在“管理资源”下链接的插件来自:http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

更新:如果您碰巧使用了引用的插件,上面的代码可以工作...如果没有,它似乎可以正常工作:) 请注意我确实在@987654329 中添加了代码@,这可能会阻止 if 工作。请看这个分叉的小提琴:http://jsfiddle.net/andrewodri/VLKwe/

希望有帮助!

【讨论】:

猜你喜欢
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
相关资源
最近更新 更多