自动完成文本框----未找到任何值

时间:2013-03-01 07:15:37

标签: jquery jquery-autocomplete

我使用jquery函数实现了一个autoComplete文本框,并从DB中获取了建议值。一切都很好。

但如果找不到匹配的数据,我想向用户显示一些用户友好的消息,说“找不到匹配”,并清除文本框。我该如何实现呢?

添加了currnt代码

function txtAutoComplete(acUrl, minLength, txtbxId) {
    $("#" + txtbxId).autocomplete({
        minLength: minLength, 
        source: function (request, responseFn) {
                $.post(acUrl, null, function (resp) {
                var txtValue = $.ui.autocomplete.escapeRegex(request.term);
                var matcher = new RegExp("^" + txtValue, "i");
                var a = $.grep(resp, function (item, index) {
                    return matcher.test(item);
                });
                responseFn(a);
            });
        }

感谢Yuriy Rozhovetskiy。

var error = 'No match';
if (a.length == 0) {
    responseFn(error);
}
else {
    responseFn(a);
}

但错误建议会垂直显示如何使其显示为正常的自动提示。 感谢

3 个答案:

答案 0 :(得分:1)

你可以在源功能中完成所有这些工作人员:

source: function (request, responseFn) {
    $.post(acUrl, null, function (resp) {
        var txtValue = $.ui.autocomplete.escapeRegex(request.term);
        var matcher = new RegExp("^" + txtValue, "i");
        var a = $.grep(resp, function (item, index) {
            return matcher.test(item);
        });

        if(a.length == 0){
            alert("No matches found");
            $("#" + txtbxId).val("");
        }
        responseFn(a);
    });
}

答案 1 :(得分:1)

根据Yuriy Rozhovetskiy的建议更改了我的代码,只需稍加修改即可发送有效的JSON

var error = ["No match"];
if (a.length == 0) {
    responseFn(error);
}
else {
    responseFn(a);
}

答案 2 :(得分:0)

您可以在返回值的脚本中返回此值。

不要返回任何内容,只需检查是否有某些值,如果没有返回一个数组,其中包含一个包含&#34的值;找不到匹配项" -Value。