javascript中的简单自动完成功能

时间:2015-07-01 18:51:35

标签: javascript jquery json jquery-ui

我正在尝试根据第三方应用提供的用户名来使用简单的自动完成功能。

应用程序以这种通用格式输出数据:

"{
"UserA":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/","LastAskSource":"","LastAskType":2,"Name":"UserA"},
"UserB":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/","LastAskSource":"","LastAskType":2,"Name":"UserB"},
"UserC":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/","LastAskSource":"","LastAskType":2,"Name":"UserC"}
}"

现在,我想使用下面列出的常规自动完成功能:

$("#chatEntryBox").autocomplete({
    source: usersOnline.Name
});

我已经将数组定义为:

OnlineUsers = data.userinfo;

for (var i in OnlineUsers) {
  var user = OnlineUsers[i];
  usersOnline = $.map(OnlineUsers, function(el) { return el; })
}

现在,上面这部分按我预期的方式工作。我可以通过执行JSON.stringify(usersOnline[0].Name);

在控制台中测试数组的值

我查看了Jquery网站上的文档......我只是觉得我遗漏了一些东西或误解了。如果有人能指出我正确的方向,那就太好了。

最终目标是输入用户名的前几个字母,然后自动完成其余的字母。

1 个答案:

答案 0 :(得分:1)

我为你的问题here做了一个小提琴。

从json中取出名称的循环可以像这个一样简单

var usersOnline = $.map(input, function(el) { return el.Name; })

$( "#chatEntryBox" ).autocomplete({
    source: usersOnline
});