我不是很喜欢 js 和一般的编程,但我非常坚持一些真的不应该太难的事情。欢迎访问测试页面:
[删除链接]
我有三个自动完成字段:当前俱乐部、国家和职业统计数据。 自动完成功能非常适合职业统计数据,我还可以在其中添加字段,自动完成功能也适用于添加的字段。
但对于当前的俱乐部和国家字段,我在输入时会得到结果,但当我单击正确的输出时,它不会显示在输入字段中。
我可以使用其他 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);
?>
关于为什么当我点击它时所选的俱乐部没有出现的任何想法都会被应用!!
最佳答案
哇,用了我的 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
});
您可以再次阅读我的教程,但自动完成需要返回一个 label
或 value
字段。然后用该值填充选择列表和相应的输入字段。
我留在 $row_array['currentclub'] = $row['clubShortName'];
因为我不知道你以后是否会捕获它。如果不是,则也不需要该行。
由于您控制返回的数据并且可以在 php 中指定 label
和/或 value
字段,所以我不明白您为什么要使用 _renderItem
用于任何自动完成。
顺便说一句,您应该将 mysql_real_escape_string
添加到您的 php 代码中以进行一些 sql 注入(inject)保护:http://www.php.net/manual/en/function.mysql-real-escape-string.php
关于php - jquery-ui-1.8.14 使用 php 和 mysql 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7450933/