【问题标题】:getting jquery autocomplete to pass item to another field when selected选择时让jquery自动完成将项目传递给另一个字段
【发布时间】:2010-08-09 17:38:33
【问题描述】:

我已经为此工作了几个小时,它应该可以工作,但我错过了一些东西!

基本上,我使用带有 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);

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

【问题讨论】:

  • PHP 脚本容易受到 SQL 注入攻击。希望您在这里给我们的只是一个示例,而不是指定为生产代码。

标签: php jquery json autocomplete


【解决方案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
   }
});

});

【讨论】:

    【解决方案2】:

    按照 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
       }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-14
      • 2017-09-13
      • 2018-01-31
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      相关资源
      最近更新 更多