2011-09-16 45 views
3

我並不十分注意js和一般編程,但是我非常堅持一些真正不應該太困難的事情。歡迎訪問測試頁:jquery-ui-1.8.14使用php和mysql自動填充

[REMOVED LINK]

我有三個自動完成字段:當前俱樂部,國家和職業的統計數據。 自動完成適用於我可以添加字段的職業統計數據,而且自動完成功能也適用於添加的字段。

但是對於現在的俱樂部和國家領域,我在打字的時候得到了結果,但是當我點擊正確的輸出時,它並沒有出現在輸入字段中。

我可以使用其他js庫工作,但它不再適用於添加按鈕職業統計字段。

我用下面的庫:

<script type="text/javascript" src="js/jquery-1.6.3.js"></script> 
<script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script> 
<script type="text/javascript" src="js/jq-ac-script.js"></script> 

目前俱樂部的html看起來像:

<p> 
    Current club <label>:</label> 
    <input type="text" id="currentclub" /> 
</p> 

在定製JQ-AC-的script.js(我最初發現這個地方在線 - 不記得在哪裏)重要部分是:

$(document).ready(function(){ 
    $("#currentclub").autocomplete({ 
     source: "get_club_list.php", 
     minLength: 1  
    }) 
    .data("autocomplete")._renderItem = function(ul, item) { 
     return $("<li></li>") 
     .data("item.autocomplete", item) 
     .append(item.currentclub) 
     .appendTo(ul); 
    }; 
}); 

「get_club_list.php」看起來像:

<?php 
include ("dbsetup.php"); 

$return_arr = array(); 
$param = $_GET["term"]; 

$fetch = mysql_query("SELECT * FROM FootNews_CLUB 
    WHERE clubShortName LIKE '%$param%'"); 

/* Retrieve and store in array the results of the query.*/ 
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) { 

    $row_array['currentclub']   = $row['clubShortName']; 
    array_push($return_arr, $row_array); 
} 

/* Free connection resources. */ 
mysql_close($conn); 

/* Toss back results as json encoded array. */ 
echo json_encode($return_arr); 

?> 

任何想法,而爲什麼選定的俱樂部不顯示時,我點擊它會appriciated!

回答

1

哇,用我的php代碼。很酷,很高興我能幫上忙。 http://www.jensbits.com/2010/03/29/jquery-ui-autocomplete-widget-with-php-and-mysql/

不確定爲什麼您在其中使用帶有_renderItem的自動完成代碼。我不認爲你需要它。

更改PHP代碼如下:

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) { 

    $row_array['currentclub'] = $row['clubShortName']; 
    $row_array['value'] = $row['clubShortName']; 
    array_push($return_arr, $row_array); 
} 

而且,jQuery來:

$("#currentclub").autocomplete({ 
    source: "get_club_list.php", 
    minLength: 1  
}); 

您可以通過我的教程看了一遍,但自動完成需要一個labelvalue外地回來。然後使用該值填充選擇列表和相應的輸入字段。

我留在$row_array['currentclub'] = $row['clubShortName'];因爲我不知道你是否在後面抓。如果你不是,你也不需要那條線。

既然你控制返回的數據,並可以在PHP指定label和/或value場,我不明白爲什麼您使用的是_renderItem任何的自動完成的。

BTW,你應該添加mysql_real_escape_string到你的PHP代碼一些SQL注入防護:http://www.php.net/manual/en/function.mysql-real-escape-string.php

+0

太謝謝你了!這解決了它,並且還要感謝您回到您的教程的鏈接。 – Sky