2016-05-18 2 views
1

Проблема:получить только первый член из JQuery автозаполнения

Мой JQuery автозаполнения возвращает два ключевых слова, которые можно найти в базе данных. Я хочу, чтобы пользователь видел их как при поиске, а при выборе варианта, только одно ключевое слово должно быть выбрано и вставлено в качестве значения.

HTML код:

<!DOCTYPE html> 
<html lang="en"> 

<head> 
    <meta charset="utf-8"> 
    <title>Demo</title> 
    <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css"> 
</head> 

<body> 
    <form action="" method="post"> 
     <p> 
      <label>Country:</label> 
      <input type='text' name='country' value='' class='auto'> 
     </p> 
    </form> 

    <script type="text/javascript" src="//code.jquery.com/jquery-1.9.1.min.js"></script> 
    <script type="text/javascript" src="//code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 

      //autocomplete 
      $(".auto").autocomplete({ 
       source: "search.php", 
       minLength: 1 
      }); 

     }); 
    </script> 
</body> 

</html> 

PHP код:

<?php  
    if (isset($_GET['term'])) 
    { 
     $return_arr = array(); 

     try { 
      $conn = new PDO("mysql:host=".DB_SERVER.";dbname=".DB_NAME, DB_USER, DB_PASSWORD); 
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

      $stmt = $conn->prepare('SELECT * FROM airports WHERE name LIKE :term OR iata LIKE :term'); 
      $stmt->execute(array('term' => '%'.$_GET['term'].'%')); 

      while($row = $stmt->fetch()) { 
       $return_arr[] = $row['iata'] . ' (' . $row['name'] . ')'; 
      } 

     } 
     catch(PDOException $e) { 
      echo 'ERROR: ' . $e->getMessage(); 
     } 

     echo json_encode($return_arr); 
    } 
?> 

Выход:

Как вы можете видеть, полное имя показывает в поле ввода. Но я хочу, чтобы вместо этого было аббревиатура. Таким образом, возникает вопрос:

Как вы разрешаете пользователю видеть полное имя во время поиска, а только выбираете аббревиатуру, как только пользователь делает выбор?

enter image description here

Желаемый результат:

Чтобы получить только аббревиатуру аэропорта в поле ввода (например, Джон Ф. Кеннеди).

+0

Вы уже проверили это? http://stackoverflow.com/questions/19440428/jquery-catching-click-event-on-jquery-ui-autocomplete – briosheje

+0

Я думаю '$ return_arr [] = array ('id' => $ row ['iata'] , 'value' => $ row ['iata'], 'text' => $ row ['iata']. '('. $ row ['name']. ')'); 'должен делать трюк – Bobot

+0

@ Bob0t Это не так, только аббревиатура появляется, а не полное название аэропорта. Попробуйте найти JFK на демо: https://abc-supervisor.c9users.io/t.php – kexxcream

ответ

Смежные вопросы