Задать вопрос
@B1ackGh0st

Как передать ID и Имя в input'ы в автодополнении jquery.autocomplete.js?

Всем привет. Я использую плагин jquery.autocomplete.js для заполнения городов, все работает все ОК. Но с input в файл обработчика формы приходит имя города, как сделать так чтобы в одно поле input вставлось вытянутое из БД имя города а в другое его ID

$(function(){
  $("#city").autocomplete({
    source: "City.php",
  });

include_once 'inc/database.php';

if (isset($_GET['term']))	{

    $returnArr = array();
    
    $term = $_GET['term'];
    
    $sql = "SELECT * FROM city WHERE city_name LIKE '%".$term."%'";

    $stm = $pdo->prepare($sql);
    $stm->execute();
    $array = $stm->setFetchMode(PDO::FETCH_ASSOC);
    while ($array = $stm->fetch())	{
    
      $returnArr[] =  $array['city_name'];
    
    }
    echo json_encode($returnArr);
}
  • Вопрос задан
  • 5325 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Например, заглянуть в документацию. Нужные вам методы - focus/select.
Ответ написан
Комментировать
Листинг файла index.php
<!DOCTYPE HTML>
<HTML>
 <HEAD>
   <title>Jquery UI autocomplete</title>
   <meta charset="utf-8">
   <link rel="stylesheet" href="jquery-ui.min.css">
   <link rel="stylesheet" href="jquery-ui.theme.min.css">
   <SCRIPT type="text/javascript" src="jquery-1.11.1.min.js"></SCRIPT>
   <SCRIPT type="text/javascript" src="jquery-ui.min.js"></SCRIPT>
   <SCRIPT type="text/javascript">

    $(document).ready(function(){
      $('#person').autocomplete({
        source: "person_autocomplete.php",
        minLength: 3,
        select: function(event,ui) {
            $("#pers_id").attr("value",ui.item.id);
            $sel_person = ui.item.label;
        },
      });
    });

   </SCRIPT>
</HEAD>
<BODY>

    <FORM action = "<?=$_SERVER['SCRIPT_NAME']?>" method = "post" onsubmit="submitted = true;">
        <INPUT type = "text" readonly="readonly" size="8" id="pers_id" ><INPUT type="text" size="50" id="person" value="" oninput="if($sel_person != $(this).attr('value')) { $('#pers_id').attr('value', ''); }">
        <SELECT id="">
        <INPUT type = "text" size = "50" >
        <BR>
        <INPUT type = "submit" value = "Send" id = "sendData">
    </FORM>
</BODY> 
</HTML>


Листинг файла обработки AJAX-запроса person_autocomplete.php
<?
      mysql_connect($sServer, $sUser, $sPass) or die("Не могу подключиться к базе данных\n\r".mysql_error());
      mysql_select_db($sDb) or die("Не могу открыть базу данных\n\r".mysql_error());
      mysql_query('SET NAMES utf8');
      if (isset($_GET['term'])){
          $returnArr = array();
          $res = mysql_query("SELECT * FROM `tperson` WHERE `Name_rus` LIKE '".$_GET['term']."%'");
           while($row = mysql_fetch_assoc($res)) {
              $currval = array();
              $currval['label'] =  $row['Name_rus'];
              $currval['id'] = $row['id'];
              array_push($returnArr, $currval);
           }
      }
      echo json_encode($returnArr);
?>

Ответ на Ваш вопрос в последнем цикле while:
1. формируем промежуточный массив c ФИО и ID.
2. добавляем его в результирующий
3. profit :)

Также в примере можете увидеть способ очистки поля ID при внесении изменений в INPUT с autocomplete
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы