javascript - jQuery UI 自动完成 - 无结果消息

标签 javascript jquery jquery-ui autocomplete jquery-autocomplete

如果没有结果,我尝试在下拉菜单中显示“无结果”消息。例如,如果我在文本字段中输入“ABCD”,并且没有匹配的实体,则会显示消息“无结果”。将显示。

在浏览 stackoverflow 寻找实现此目的的各种不同方法并尝试其中一些之后,我仍然无法让它工作。

未找到结果时,如何向下拉菜单添加“无结果”消息?

jQuery:

    $element.autocomplete({
        source: function (request, response) {            
            $.ajax({
                url: thUrl + thQS,
                type: "get",
                dataType: "json",
                cache: false,
                data: {
                    featureClass: "P",
                    style: "full",
                    maxRows: 12
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        if (data.indexOf(item) === -1) {
                            return { label: "No Results." }
                        } else {
                            return {
                                label: item.Company + " (" + item.Symbol + ")",
                                value: item.Company
                            }
                        }
                    }));
                }
            });
        },
        minLength: that.options.minLength,
        select: function (event, ui) {
               reRenderGrid();
        }
    });

我尝试添加带有以下内容的 if() 语句,但没有成功。

if (data.length === 0) {
    // Do logic for empty result.
}

如果执行以下操作,我可以用文本“无结果”覆盖第一个条目...

if (data.indexOf(item) === 0) {
    return { 
        label: "No Results." 
}

...但是如果我设置 data.indexOf(item) === -1 什么也不会显示。

我最近尝试了以下操作,当没有数据时,它会进入循环,但是,“无结果”不会显示在菜单中:

   success: function (data) {
        response($.map(data, function (item) {
            return {
                label: item.Company + " (" + item.Symbol + ")",
                value: item.Company
            }
        }));
        if (data.length === 0) {
            label: "No Results."
        }
    }

我还尝试使用 Andrew Whitaker 的以下示例,但没有成功:

安德鲁惠特克的 fiddle :http://jsfiddle.net/J5rVP/128/

来源:http://blog.andrewawhitaker.com/2012/10/08/jqueryui-autocomplete-1-9/

最佳答案

if (!ui.content.length) {
    var noResult = { value:"",label:"No results found" };
    ui.content.push(noResult);
    //$("#message").text("No results found");
} 

fiddle

http://jsfiddle.net/J5rVP/129/

更新

将代码放在自动完成设置的末尾,紧接在 select: function (event, ui) {..}

    ..........
    minLength: that.options.minLength,
    select: function (event, ui) {
        reRenderGrid();
    },   //HERE - make sure to add the comma after your select
    response: function(event, ui) {
        if (!ui.content.length) {
            var noResult = { value:"",label:"No results found" };
            ui.content.push(noResult);
        }
    }
});

关于javascript - jQuery UI 自动完成 - 无结果消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20053231/

相关文章:

javascript - Angular 2 中的变量内部函数

javascript - 如何在 jQuery 中定位所选选项的父 div?

javascript - 一次触发多个 jQuery 动画

jQuery UI 日期选择器在对话框中崩溃

javascript - 使用文本区域在表单中添加行 [php]

javascript - 调用对象方法给出 "Uncaught TypeError: is not a function"错误

javascript - 如何创建计算未隐藏的 div 并在用户应用过滤器时更新的脚本

javascript - Jquery post 的痛苦 jquery 错误

css - 调整 FlexBox 容器的大小

javascript - 网页上的实时监控图表