Но в документации jQueryUI говорится, что ему нужен плоский массив строк.
На самом деле :
Локальные данные могут быть простой массив строк или содержит объекты для каждого элемента в массиве со свойством label или value или обоими.
Так что, пока ваши данные имеют свойство не менее value
для каждого объекта в массиве, виджет может обрабатывать его:
[
{
"name": "John's wild bacon emporium",
"code": "BACON",
"value": "Bacon",
},
{
"name": "Jill and Jack's well",
"code": "WELL"
"value": "Well"
},
{
"name": "Herp and derp",
"code": "HD",
"value": "Herp"
}
]
Запрос пользователя будет сопоставлен со свойством value
каждого объекта (обратите внимание, что метка не требуется; указывайте ее только в том случае, если вы хотите показать в списке параметров автозаполнения что-то отличное от value
).
Вы можете получить доступ к дополнительным данным об элементе в обработчике события select
:
select: function(event, ui) {
alert(ui.item.code); // Access the item's "code" property.
}
Надеюсь, что это поможет.Вот простой пример: http://jsfiddle.net/vR3QH/. Я удалил свойство name
и вместо него просто использую свойство value
.Каждый раз, когда элемент выбран, элементы input
обновляются со значениями свойств, принадлежащих выбранному элементу.