在AutoComplete中找不到匹配值时清除文本框

时间:2013-03-09 10:07:15

标签: jquery autocomplete

我已经实现了AutoComplete文本框,它正在按预期工作。

目前如果在建议中找到“无匹配”,则显示没有结果作为建议但是当他们点击该值时应用于tex框

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

结果是要在autosuggest中显示的匹配项列表。如果结果为空,则建议说“不匹配”但我不希望用户选择所以我在if (results.length == 0) {

中尝试了以下代码
$("#txtNewAttributes").blur(function () {
    $("#" + txtbxId).val("");
})

但它会清除所有场景中的文本框,即使找到匹配的项目也是如此。我该如何实现呢?

如果找不到匹配项,我需要清除TextBox。

3 个答案:

答案 0 :(得分:2)

之前我也面临同样的问题。

在jquery.autocomplete中,有不同的回调函数,如focus,change。

如果使用下面的回调函数找不到匹配项,则可以清除文本框。

change: function (e, u) {
            //If the No match found" u.item will return null, clear the TextBox.
            if (u.item == null) {
                //Clear the AutoComplete TextBox.
                $(this).val("");
                return false;
            }
        }

这个解决方案对我有用。

答案 1 :(得分:0)

拥有全局变量

var has_valid_values = false;

如果results.length == 0则将其设置为false,否则设置为true。

在模糊处理程序中,使用

if (!has_valid_values)
  $("#" + txtbxId).val("");

答案 2 :(得分:0)

您的代码将事件处理程序绑定到输入。尝试直接清除输入,如下所示:

$("#" + txtbxId).val("");