【问题标题】:problem with jquery autocompletejquery自动完成的问题
【发布时间】:2009-12-24 16:09:12
【问题描述】:

我正在使用 jquery 自动完成来填充用户列表。 在document.ready 中,我正在调用自动​​完成 json 来获取用户列表。

当我在自动完成 json 调用完成之前在文本框中输入有效的用户名(或任何内容)时,它不会显示自动完成选项(自动完成也不适用于有效字符)。

当我在文本框外单击并再次尝试时,它的工作..

当我在自动完成 json 调用完成之前尝试键入时,自动完成可能有什么问题?

自动完成的代码是:

 $.getJSON("/User/GetAllUsers/?t=" + new Date(), {},
        function(data) {
            if (data != null) {
                $("#UserName").autocomplete(data, { mustMatch: false, matchContains: 4, max: 50,
                    formatItem: function(row) {
                        return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]";
                    },
                    formatResult: function(row) {
                        return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]";
                    }
                });
            }
        });

【问题讨论】:

  • 你能发布一些代码,也许是你绑定自动完成的 coument.ready 吗?

标签: jquery autocomplete


【解决方案1】:

如果您在文本框中键入,然后 JSON 调用完成,并且在设置您的自动完成之后..

编辑:忘记我说的话: 您可以使用search 方法手动触发搜索

尝试在文本框上触发更改事件? http://docs.jquery.com/Events/trigger

【讨论】:

  • 触发器也不起作用。除非我关注其他一些控件并返回用户名控件,否则它不会显示值。
  • 你能做一个 blur() 和一个 focus() 吗?
【解决方案2】:

设置自动完成片段的回调方法仅在 getJSON 调用完成后执行。

您可以执行以下两项操作之一: 1.构建阻塞机制,阻塞UI/文本框,直到json调用完成。本质上,当自动完成绑定完成时。 2.使用自动补全插件直接查询GetAllUsers方法:

$("#UserName").autocomplete("/User/GetAllUsers/?t=" + new Date(), { mustMatch: false, matchContains: 4, max: 50,
                formatItem: function(row) {
                    return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]";
                },
                formatResult: function(row) {
                    return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]";
                }
            });

然后,您必须使用包含所需搜索词的 queryParameter (q) 过滤服务器端的用户。

【讨论】:

    猜你喜欢
    • 2010-12-04
    • 2011-08-08
    • 2013-01-22
    • 2016-05-31
    • 2011-10-08
    • 2011-11-16
    • 2017-06-19
    • 2011-08-11
    相关资源
    最近更新 更多