2012-10-02 53 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',但將值放入正確的值,因此將標籤更改爲等於名稱,公司和電子郵件的組合,作爲(略微修改的)查詢結果中的字符串和這一切都按預期工作。非常感謝你。 –