Как возвращать (добавить) в контейнер (div) код, помимо других результатов?

Реализую автозаполнение с помощью AJAX по этому примеру.
Всё работает. Но мне надо еще передавать дополнительный код в мой контейнер.
Пока передаю только выбранный текст из БД в текстовое поле автозаполнения.
Как нужно изменить функцию function select_this(val) или добавить новую, чтобы передавать дополнительный код в мой контейнер (id="autocomplete_search_code")?

Кратко (ниже есть спойлер подробно, если что...)

Вот php код. Это то, что отображается в выпадающем списке. Пользователь щелкает по пункту и вызывает функцию select_this, которая заполняет поле (см ниже):

//Возвращаемый код (результаты)
//Наверно стоит передать функции select_this ещё один аргумент - дополнительный код?
echo"<li onClick=\"select_this('То, что окажется в поле автозаполнения');\">Текст из бд в выпадающем списке</li>"; 
//Как то так?
/* 
echo"<li onClick=\"select_this('То, что окажется в поле автозаполнения', 'То, что будет вставлено в контейнер autocomplete_search_code');\">Текст из бд в выпадающем списке</li>"; 
*/


А вот и функция select_this в которую мы передаем аргумент из кода выше.
По событию onClick. А конкретно - "То, что окажется в поле автозаполнения"
И она это вставляет в поле автозаполнения. Вот бы ещё вставляла скрытый код в контейнер....

/*  
Вот функция, заполняющая текстовое поле автозаполнения.
Наверно её нужно изменить? У нас же теперь должно быть 2 аргумента.
 */
function select_this(val) {
$("#autocomplete_search_box").val(val); 
$("#autocomplete_suggesstion_box").hide();
}

Код моей формы, с полями и контейнером:

<form method="post" action="actions.php?do_it">
<input type="text" id="autocomplete_search_box" />
<div id="autocomplete_suggesstion_box"></div> 
<!-- Мой контейнер, в который я хочу получить код   -->
<div id="autocomplete_search_code"></div> 
</form>

Подробно

HTML код - форма. В контейнер autocomplete_search_code я хочу получить код, при выборе пункта из списка автозаполнения. Пользователь выбрал ФИО - в текстовом поле ФИО, а в контейнере появился код.
<form method="post" action="actions.php?do_it">
<!-- Текстовое поле автозаполнения  -->
<input type="text" id="autocomplete_search_box" />
<!-- Выпадающий список  автозаполнения   -->
<div id="autocomplete_suggesstion_box"></div> 
<!-- Мой контейнер, в который я хочу получить код   -->
<div id="autocomplete_search_code">
<!-- Тут, при выборе из списка, должно быть  <input type="hidden" name="..." value="..."> -->
</div> 
</form>

....
//Возвращаемый код (результаты)
echo"<li onClick=\"select_this('$result_after_select');\">$result_before_select</li>"; 
/* 
Т.е. выводим в html  
<li onClick="select_this('Иванов И.И. - это будет в текстовом поле, при клике по пункту из списка');">Иванов Иван Иванович - это будет видно в выпадающем списке</li>
Наверно, нужно передать функции select_this ещё один аргумент - в идеале код типа 
<input type="hidden" name="..." value="...">
*/

Код JS полностью аналогичный примеру. Рабочий код:

$(document).ready(function(){
	$("#autocomplete_search_box").keyup(function(){
		$.ajax({
		type: "POST",
		url: "select_data.php",

		data:'keyword='+$(this).val(), 
		beforeSend: function(){
			$("#autocomplete_search_box").css("background","#FFF url(LoaderIcon.gif) no-repeat 165px");
		},
		success: function(data){
			$("#autocomplete_suggesstion_box").show();
			$("#autocomplete_suggesstion_box").html(data);
		}
		});
	});
});

/*  
Вот функция, заполняющая текстовое поле автозаполнения.
Наверно её нужно изменить.
 */
function select_this(val) {
$("#autocomplete_search_box").val(val); 
$("#autocomplete_suggesstion_box").hide();
}

  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
dummyman
@dummyman
диссидент-схизматик
<li code="код" caption="то, что отображается">Техт</li>

вместо select_this(val):
$('ul li').click(() => {
   var code=$(this).attr('code');
   var caption=$(this).attr('caption');
   //...
})


У формы используйте событие submit() вместо keyup() у inputa
$("#autocomplete_search_box").keyup()

Надеюсь, информация поможет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы