Проблема:получить только первый член из 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);
}
?>
Выход:
Как вы можете видеть, полное имя показывает в поле ввода. Но я хочу, чтобы вместо этого было аббревиатура. Таким образом, возникает вопрос:
Как вы разрешаете пользователю видеть полное имя во время поиска, а только выбираете аббревиатуру, как только пользователь делает выбор?
Желаемый результат:
Чтобы получить только аббревиатуру аэропорта в поле ввода (например, Джон Ф. Кеннеди).
Вы уже проверили это? http://stackoverflow.com/questions/19440428/jquery-catching-click-event-on-jquery-ui-autocomplete – briosheje
Я думаю '$ return_arr [] = array ('id' => $ row ['iata'] , 'value' => $ row ['iata'], 'text' => $ row ['iata']. '('. $ row ['name']. ')'); 'должен делать трюк – Bobot
@ Bob0t Это не так, только аббревиатура появляется, а не полное название аэропорта. Попробуйте найти JFK на демо: https://abc-supervisor.c9users.io/t.php – kexxcream