2

我已经实现了按预期工作的自动完成文本框。

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

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

结果是要在自动建议中显示的匹配项目列表。 如果结果为空,它会建议说“不匹配”但我不希望用户选择它,所以我尝试了下面的代码if (results.length == 0) {

$("#txtNewAttributes").blur(function () {
    $("#" + txtbxId).val("");
})

但它会在所有情况下清除文本框,即使找到匹配项也是如此。我该如何实现呢?

如果没有找到匹配项,我需要清除文本框。

4

3 回答 3

3

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

在jquery.autocomplete中,有焦点、变化等不同的回调函数。

如果未找到匹配项,您可以使用以下回调函数清除文本框。

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;
            }
        }

这个解决方案对我有用。

于 2015-08-12T14:39:25.580 回答
0

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

$("#" + txtbxId).val("");
于 2013-03-09T10:13:21.690 回答
0

有一个全局变量

var has_valid_values = false;

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

在模糊处理程序中,使用

if (!has_valid_values)
  $("#" + txtbxId).val("");
于 2013-03-09T10:11:27.873 回答