jquery自动完成显示id而不是标签

jquery自动完成显示id而不是标签,jquery,autocomplete,Jquery,Autocomplete,我正在使用jquery的自动完成功能,它工作得很好,只是当我从下拉列表中选择某个内容时,输入字段将填充值而不是标签 我的代码如下: <?php $query = mysql_query("SELECT users.* FROM users JOIN peers ON peers.peer = users.user_id WHERE peers.user_id = '".$_SESSION['id']."'")or die(mysql_error()); $count

我正在使用jquery的自动完成功能,它工作得很好,只是当我从下拉列表中选择某个内容时,输入字段将填充值而不是标签

我的代码如下:

 <?php
   $query =     mysql_query("SELECT users.* FROM users JOIN peers ON peers.peer = users.user_id WHERE peers.user_id = '".$_SESSION['id']."'")or  die(mysql_error());
   $count   =   mysql_num_rows($query);
   $i   =   0;

   while($row = mysql_fetch_assoc($query))
   {
       $first[$i]   =   $row['first_name'];
       $last[$i]    =   $row['last_name'];
       $user_id[$i] = $row['user_id'];

       $i++;
   }

$data = "";

for($i=0;$i<$count;$i++)
{
    if($i != ($count-1))
    {
        $data .= '{ value: '.$user_id[$i].', label: "'.$first[$i].' '.$last[$i].'" }, ';
    } else
    {
        $data .= '{ value: '.$user_id[$i].', label: "'.$first[$i].' '.$last[$i].'" }';
    }
}
?>
<script type="text/javascript">
$("#auto").autocomplete({ 
    source: data,
    select: function(event, ui)
    {
        var id = ui.item.value;
        var name = ui.item.label;
    }
  });
  </script>

  <input type="text" value="Enter a connection's name" id="auto" />

您可以尝试将标签放在数组中的第一位,然后再添加值,或者查看jQuery文档中的以下代码:


select事件的默认行为是使用ui.item.value更新输入。此代码在事件处理程序之后运行

只需返回false或调用event.preventDefault即可防止发生这种情况。试试这个

<script type="text/javascript">
    $("#auto").autocomplete({ 
        source: data,
        select: function(event, ui)
        {
           var id = ui.item.value;
           var name = ui.item.label;
           $("#auto").val(name);
           return false;
        },
        focus: function(event, ui){
          return false;
        }
   });
</script>

自动完成选择事件的默认行为是使用值而不是文本填充输入字段

但是,您可以使用以下代码在选择和向下滚动选项时使用文本更新输入字段

<script type="text/javascript">
    $("#auto").autocomplete({ 
        source: data,
        select: function(event, ui)
        {
           var id = ui.item.value;
           var text = ui.item.label;
           $("#auto").val(name);
           return false;
        },
        focus: function (event, ui) {
                $("#auto").val(ui.item.label);
                return false;
            }
    });
</script>

也许您只需要交换值和标签…?是的,但是autocomplete函数将加载值而不是标签。
<script type="text/javascript">
    $("#auto").autocomplete({ 
        source: data,
        select: function(event, ui)
        {
           var id = ui.item.value;
           var text = ui.item.label;
           $("#auto").val(name);
           return false;
        },
        focus: function (event, ui) {
                $("#auto").val(ui.item.label);
                return false;
            }
    });
</script>