几天来,我一直在尝试让 jquery 自动完成以我需要的方式工作。
到目前为止,我有这个工作正常:
<script>
$(function() {
var availableTags = [<?php
$taglist = Array();
foreach ($users as $user)
if ($user->getAttribute('first_name') == ''){
$taglist[] = '"'.$user->getUserName().'"';
}else{
$taglist[] = '"'.$user->getAttribute('first_name').' '.$user->getAttribute('last_name').'"';
}
echo join(',', $taglist);
?>];
$("#searchmem").autocomplete({
source: availableTags,
minLength: 2,
select: function(event, ui) {
$("#searchmem").val(ui.item.label);
$("#submit").click();
}
}).data("autocomplete")._renderItem = function (ul, item) {
return $("<li />")
.data("item.autocomplete", item)
.append("<a><img src='/files/avatars/1.jpg' />" + item.label + "</a>")
.appendTo(ul);
}
});
</script>
这将在相应用户的用户名或全名旁边输出图像 /files/avatars/1.jpg。
我遇到的问题是尝试输出正确的用户头像。每个 .jpg 文件都对应于用户名,因此我可以在 src 中使用 $user->getUserID() 但这不起作用,因为它不在 foreach $users as $user 循环中。
我尝试将整个自动完成脚本放在 foreach 中,测试时确实会提醒正确的事情,但自动完成功能不起作用。
我也尝试过创建两个变量,例如
availableTags1 = { 标签: .... $user->getUserName() 等... }
availableTags2 = { 头像: .... $user->getUserID() 等... }
可用标签 = 可用标签 1 + 可用标签 2;
和
.data("autocomplete")._renderItem = function (ul, item) {
return $("<li />")
.data("item.autocomplete", item)
.append("<a><img src=' + item.avatar + ' />" + item.label + "</a>")
.appendTo(ul);
}
但这又没用。我完全迷路了!如何让它与相关用户名一起输出图像?帮助将不胜感激。