使用php foreach生成的结果自动完成jquery
几天来,我一直在努力让jqueryautocomplete按我需要的方式工作 到目前为止,我有一个很好用的:使用php foreach生成的结果自动完成jquery,php,jquery,image,autocomplete,foreach,Php,Jquery,Image,Autocomplete,Foreach,几天来,我一直在努力让jqueryautocomplete按我需要的方式工作 到目前为止,我有一个很好用的: <script> $(function() { var availableTags = [<?php $taglist = Array(); foreach ($users as $user) if ($user->getAttribute('first_name') == ''){ $taglist[] = '"'.$user-&
<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>
$(函数(){
var availableTags=[];
$(“#searchmem”).autocomplete({
资料来源:availableTags,
最小长度:2,
选择:函数(事件,ui){
$(“#searchmem”).val(ui.item.label);
$(“#提交”)。单击();
}
}).数据(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“”)
.data(“item.autocomplete”,item)
.append(“+item.label+”)
.附录(ul);
}
});
这将输出相应用户用户名或全名旁边的image/files/avatars/1.jpg
我遇到的问题是试图输出正确的用户头像。每个.jpg文件都与用户名对应,因此我可以在src中使用$user->getUserID(),但这不起作用,因为它不在foreach$users as$user循环中
我曾尝试将整个自动完成脚本放在foreach中,当测试时,它确实发出了正确的警报,但自动完成不起作用
我还尝试创建两个变量,例如
availableTags1={label:..$user->getUserName()等..}
availableTags2={avatar:..$user->getUserID()等..}
availableTags=availableTags1+availableTags2
及
.data(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“”)
.data(“item.autocomplete”,item)
.append(“+item.label+”)
.附录(ul);
}
但这同样没有起作用。我完全迷路了!如何让它将图像与相关用户名一起输出?非常感谢您的帮助。在您的情况下,您必须构建如下阵列:
var availableTags = [
{label: '...', avatar: '...'},
{label: '...', avatar: '...'},
...
];
和使用:
.data("autocomplete")._renderItem = function (ul, item) {
return $("<li />")
.data("item.autocomplete", item)
.append("<a><img src='" + item.avatar + "' />" + item.label + "</a>") // Note the additional double quotes
.appendTo(ul);
}
.data(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“”)
.data(“item.autocomplete”,item)
.append(“用于使用自定义数据)
然后,为了通过PHP生成数组,您应该使用:
<?php
$taglist = Array();
foreach ($users as $user) {
$data = array();
if ($user->getAttribute('first_name') == ''){
$data["label"] = $user->getUserName();
} else {
$data["label"] = $user->getAttribute('first_name').' '.$user->getAttribute('last_name');
}
$data["avatar"] = $user->getUserID();
$taglist[] = $data;
}
?>
var availableTags = <?php echo json_encode($taglist); ?>;
var availableTags=;
<?php
$taglist = Array();
foreach ($users as $user) {
$data = array();
if ($user->getAttribute('first_name') == ''){
$data["label"] = $user->getUserName();
} else {
$data["label"] = $user->getAttribute('first_name').' '.$user->getAttribute('last_name');
}
$data["avatar"] = $user->getUserID();
$taglist[] = $data;
}
?>
var availableTags = <?php echo json_encode($taglist); ?>;