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

Как передать два разных параметра виджету Autocomplite?

Есть простая форма, в которой вводим имя или адрес. При помощи JQuery Autocomplite предлагаем пользователю варианты. Вариант формируется строкой "имя"-"адрес". При дальнейшей обработке формы было бы гораздо удобнее использовать id поля введенного значения, а не строку. Как в инпут two поставить id поля при выборе значения в инпуте One и как его передать из php?
Пример формы:
<form>
  <input type="text" id="one">
  <input type="hidden" id="two">
  ...
</form>

Вызов Autocomplite
$(function(){
  $('#one').autocomplete({
	  source: "/controller/names/",
	  minLength: 2
   });
});

Обработчик на сервере:
...
$data = $this->model->get_names($q);
/* SELECT id,name,adress FROM table WHERE name LIKE %$q% or adress LIKE %$q%*/
foreach ($data as $value) {
	$response[] = $value['name']." - ".$value['adress'];
}
echo json_encode($response);
  • Вопрос задан
  • 2261 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Arik
source

Если попробовать:
$data = $this->model->get_names($q);
/* SELECT id,name,adress FROM table WHERE name LIKE %$q% or adress LIKE %$q%*/
foreach ($data as $value) {
  $response[] = array('label' => $value['name']." - ".$value['adress'], 'value' => $value['id']);
}
echo json_encode($response);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
DieZz
@DieZz Автор вопроса
Оставил так:
$response[] = array('label' => $value['name']." - ".$value['adress'], 'id' => $value['id']);

На клиенте
$(function(){
  $('#one').autocomplete({
    source: "/controller/names/",
    minLength: 2,
    select: function(event, ui) {
	  $('#two').val(ui.item.id);
   }
   });
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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