私は、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 内に配置しようとしましたが、テストすると正しいことが警告されましたが、オートコンプリートは機能しませんでした。
また、次のような2つの変数を作成しようとしました
availableTags1 = { ラベル: .... $user->getUserName() など... }
availableTags2 = { アバター: .... $user->getUserID() など... }
availableTags = availableTags1 + availableTags2;
と
.data("autocomplete")._renderItem = function (ul, item) {
return $("<li />")
.data("item.autocomplete", item)
.append("<a><img src=' + item.avatar + ' />" + item.label + "</a>")
.appendTo(ul);
}
しかし、これもうまくいきませんでした。私は完全に迷っています!関連するユーザー名と一緒に画像を出力するにはどうすればよいですか? 助けていただければ幸いです。