2012-10-02 27 views
1

我在我的页面中有一个jQuery自动完成脚本,如果我输入它的工作领域,并根据3个字符后请求,包含预期数量建议会弹出...有点......因为下拉菜单中没有文字。jQuery UI自动完成得到的建议,但不显示它们

如果我将鼠标悬停在下拉菜单上,就好像我选择了其中一个建议,一个窄条显示每行提示的亮点,但选择其中一个空突出显示该字段。这并不奇怪。我不太了解处理返回数据的情况。我在这些论坛的其他帖子中看到了非常简单和复杂的自动完成代码示例代码,但是使用我认为我理解的那些代码通常会破坏它,直到我根本没有下降为止。因此,我毫不吝啬地寻找某人为我提供可用的代码,以便我可以将其分开,并计算出它的工作原理。

我的基本JS代码:

$("#tf_txt_CLIENTNAME").autocomplete({ 
     source: "search.php", 
     minLength: 3,//search after three characters 
     dataType: 'json', 
     select: function(event,ui){ 

      //do domething 

     } 

这是做一些区域我只是无法得到正确的。正如我所说的,我已经尝试了太多的代码在这里提到,所有的代码都完全破坏了。

search.php中产生下面的JSON输出关于 '胸罩' 的输入:

[{"txt_CLIENTNAME":"Braedon"},{"txt_CLIENTNAME":"Bradly"}] 

从以下PHP源(借用和从另一个web源修改):

<?php 
require_once 'includes/dbiconnect.php'; 
require_once 'includes/sqlfunctions.php'; 

$term = trim(strip_tags(addslashes($_GET['term']))); //retrieve the search term that autocomplete sends 

$qstring = "SELECT `txt_CLIENTNAME` FROM `tbl_client_details` WHERE `txt_CLIENTNAME` LIKE '%".$term."%'"; 
$result = mysqli_query($db_link,$qstring); //query the database for entries containing the term 

while ($row = mysqli_fetch_assoc($result)) {//loop through the retrieved values 
     $row['txt_CLIENTNAME']=htmlentities(stripslashes($row['txt_CLIENTNAME'])); 
     $row_set[] = $row; //build an array 
} 
echo json_encode($row_set); //format the array into json data 
?> 

我简单地希望它能够显示它找到的内容,并将其中的一个选中到文本字段的值中。然后,我可以更新我想填充的其他字段(公司,电话号码#&电子邮件)使用$ .POST触发onchange事件为该字段(我敢肯定有更好的方法来做到这一点,但我了解如何做到这一点)。

我正在使用jQuery 1.7.2和jQuery UI 1.8.22。我有最新的jquery工具箱加载以及没有选项卡组件,但删除它没有任何区别。

由于提前,

Braedon

回答

2

按jQuery UI的指导,

您的JSON需要包含标签或值(或两者)

您需要改变你的json如下

while ($row = mysqli_fetch_assoc($result)) {//loop through the retrieved values 
     $row['txt_CLIENTNAME']=htmlentities(stripslashes($row['txt_CLIENTNAME'])); 
     $row_set[] = array('label'=>'txt_CLIENTNAME','value'=>$row['txt_CLIENTNAME']); //build an array 
} 
+0

谢谢。它为我提供了两行'txt_CLIENTNAME',但将值放入正确的值,因此将标签更改为等于名称,公司和电子邮件的组合,作为(略微修改的)查询结果中的字符串和这一切都按预期工作。非常感谢你。 –