我正在使用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 + "]";
}
});
}
});
答案 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)过滤服务器端的用户,该参数将包含所需的搜索词。