Вы на правильном пути!
Виджет автозаполнения построен для обработки подобных ситуаций. Пока элементы в вашем source
имеют свойство value
(и, возможно, свойство label
), виджет будет правильно отображать параметры.
Итак, у вас есть два варианта. Вы можете предоставить свойство label
и value
и создать свои скрытые элементы input
со свойством value
после события select
, либо использовать свой собственный атрибут. Это проще увидеть на примере:
var users = [
{ label: 'Jon', value: 1 },
{ label: 'Jeff', value: 2 },
{ label: 'Marc', value: 3 },
{ label: 'Josh', value: 4 },
{ label: 'Andrew', value: 5}
];
$("#autocomplete").autocomplete({
source: users,
select: function(event, ui) {
$("body").append("<input type='text' value='" + ui.item.value + "'/>");
}
});
Вот рабочий пример: http://jsfiddle.net/EYQLV/1/
Вы также можете легко использовать ui.item.id
, если каждый элемент в вашем источнике содержит это свойство.