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

时间:2010-08-09 17:38:33

标签: php jquery json autocomplete

我一直在研究这个问题几个小时它应该可以工作但是我错过了一些东西!

基本上,我正在使用带有json源的jquery自动完成,具有2个值id和description。 描述应显示在建议中,如果选择了项目并且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);

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

2 个答案:

答案 0 :(得分:1)

首先,切换到使用实际的jQuery UI autocomplete

您必须理清如何在服务器端或JSON回调中格式化项目,因为不再支持formatItems。请查看此guide以获取一些帮助。

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

$(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
   }
});

});

答案 1 :(得分:0)

正如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
   }
});