Когда пользователь начинает вводить на поле поиска, страница предложения возвращает последний объект из всех наборов, соответствующих что NAMA плюс другие данные.
Я хотел бы показать что объект (вдоль его изображения), и ссылка для "наблюдения всех объектов от этого набора".
Я могу сделать (большая часть) что со следующим кодом:
$('#search').autocomplete({
source: function (request, response) {
$.ajax({
url: suggesturl,
dataType: 'json',
data: request,
success: function (data) {
response(data.map(function (value) {
return {
'label': '<img src="' + value.thumbsmall + '" />' + value.name + '<a href="/">More items from this collection...</a>',
'value': value.fullname
};
}));
}
});
},
minLength: 3
})
Проблема состоит в том, что, хотя ссылка появляется в поле, когда это нажало, это проигнорировано, и значение по умолчанию select
действие выполняется (объект value
помещается в текстовое поле).
Похоже, у вас есть несколько вариантов. Во-первых, вы можете указать собственное действие выбора, используя параметр выбора в инициализаторе автозаполнения.
$(selector).autocomplete({
source: ... ,
select: function(value, data){
if (typeof data == "undefined") {
emitMessage('You selected: ' + value + "<br/>");
} else {
emitMessage('You selected: ' + data.item.value + "<br/>");
}
}
});
Если по какой-то причине этого недостаточно, вы можете отобразить свой собственный контент для списка автозаполнения и таким образом получить столько контроля, сколько вам нужно.
Вы делаете это, исправляя _renderItem fn, который вызывается функцией автозаполнения для визуализации каждого элемента в списке. Посмотрите этот ответ , чтобы узнать, как это сделать. Работает в v1.8rc3.
Я полагаю, что в _renderItem вы можете отобразить интерактивный
и прикрепить любую логику к событию щелчка.
Если вы пойдете по этому маршруту, вам может потребоваться ВЫКЛЮЧИТЬ действие щелчка по умолчанию. Я думаю, что автозаполнение использует
для элемента, который предоставляет событие щелчка. В этом случае вам нужно отключить этот обработчик кликов.