2013-08-19 2 views
0

Я использую автозаполнение и получаю элементы из базы данных. Вот мой JS:JQuery UI Autocomplete - как добавить еще одно значение с товаром?

$(".add").autocomplete({ 

     source: function(req, add){ 

      $.getJSON("add.php?callback=?", req, function(data) { 

       var suggestions = []; 

       $.each(data, function(i, val){ 
        suggestions.push(val.name); 
       }); 

       add(suggestions); 
     }); 
    }, 

     messages: { 
      noResults: '', 
      results: function() {} 
     } 

    }); 

Я посылаю массив PHP, где есть «имя» и «идентификатор». Я хочу знать идентификатор выбранного элемента, когда пользователь выбирает его, не обращаясь к базе данных, но я не могу поместить его в источник без его отображения, чего я не хочу. Что я хочу иметь неотделимый идентификатор с каждым автозаполнением каждого элемента, и когда пользователь его выбирает и отправляет это значение, я могу вставить объект в базу данных.

Вот мой PHP-файл:

<?php 

require('connect.php'); 

$param = $_GET["term"]; 

$query = mysqli_query($connection, "SELECT * FROM stuff WHERE name REGEXP '^$param'"); 

for ($x = 0, $numrows = $query->num_rows; $x < $numrows; $x++) { 
    $row = mysqli_fetch_assoc($query); 
    $add[$x] = array("name" => $row["name"], "id" => $row["id"]); 
} 

$response = $_GET["callback"] . "(" . json_encode($add) . ")"; 
echo $response; 

Надеется, что это имеет смысл.

ответ

1

Вы могли бы брать пример по этой ссылке: http://jqueryui.com/autocomplete/#custom-data

$("#txtItem").autocomplete({  
    select: function (event, ui) { 
       return false; 
      } 
}).data("ui-autocomplete")._renderItem = function(ul, item) { 
     return $("<li>") 
     .append("<a onclick='itemclicked(this)' id='" + item.id + "'>" + item.desc + "</a>").appendTo(ul); 
     }; 

function itemclicked(sender) 
{ 
    alert($(source).attr("id");) 
} 
Смежные вопросы