jquery自动完成的问题

时间:2009-12-24 16:09:12

标签: jquery autocomplete

我正在使用jquery自动填充来填充用户列表。 在document.ready中,我调用autocomplete 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 + "]";
                    }
                });
            }
        });

2 个答案:

答案 0 :(得分:0)

如果您输入文本框,然后JSON调用结束,并在设置自动完成后...

编辑:忘了我说的话: 您可以使用search方法

手动触发搜索

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

答案 1 :(得分:0)

设置自动完成部分的回调方法仅在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)过滤服务器端的用户,该参数将包含所需的搜索词。