获取jquery自动完成function,以便在选中时将项目传递到另一个字段

我已经在这个工作了几个小时它应该工作,但我错过了一些东西!

基本上,我使用json自动完成与json源,具有2个值id和描述。 说明应显示在建议中,是否选择了项目并将ID传递给隐藏字段(该字段当前未被隐藏用于测试目的)

这是我的代码:

$(function() { $("#CurrentProv").autocomplete({ source: "inc/provider_term.php", minLength: 3, formatItem: function(data, i, n, value) { return value.split("|")[1]; } }); $("#CurrentProv").result(function(event, data, formatted) { if (data) $("input#fid").val(data[0]); }); }); 

// PHP有效的json输出

 $term = $_GET['term']; $sql = "SELECT * FROM db.table WHERE PName LIKE '%$term%'"; $res = mysql_query($sql, $conn) or die(mysql_error()); while ($row = mysql_fetch_array($res)) { $searchArray['value'] = $row['PID'].'|'.$row['PName']; $search[] = $searchArray; } echo json_encode($search); 

我搜索并做了各种变化,仍然无法正常工作! 我的大脑正在关闭!!!!!!!!

首先,切换到使用实际的jQuery UI 自动完成 。

您将不得不理清如何在服务器端或JSON回调中格式化项目,因为不再支持formatItems。 查看本指南以获得一些帮助。

既然你已经这样做了,它的外观如下:

 $(function() { $("#CurrentProv").autocomplete({ source: "inc/provider_term.php", //or you can use a callback here minLength: 3, change: function(event, ui) { $("input#fid").val(ui.item.value);//or ui.item.desc perhaps } }); 

});

正如Ryley所做的那样,调整PHP代码和JS的工作建议:

 $term = $_GET['term']; $sql = "SELECT * FROM db.table WHERE PName LIKE '%$term%'"; $res = mysql_query($sql, $conn) or die(mysql_error()); while ($row = mysql_fetch_array($res)) { $searchArray['value'] = $row['PID']; $searchArray['id'] = $row['PName']; $search[] = $searchArray; } echo json_encode($search); $(function() { $("#CurrentProv").autocomplete({ source: "inc/provider_term.php", //or you can use a callback here minLength: 3, change: function(event, ui) { $("input#fid").val(ui.item.id);//or ui.item.desc perhaps } });