Я пытаюсь получить выбранное значение из автозаполнения jquery по какой-то причине, я не могу получить идентификатор. Я видел решение здесь http://www.codeproject.com/Articles/152558/jQuery-UI-Autocomplete-with-ID, но мои данные возвращаются, как показано ниже. Как мне получить идентификатор сохраненного?
Мои данные
[{"id":3,"homename":"DCosta"}]
Мой код
$("#lastname").autocomplete({
source: function (request, response) {
var term = request.term;
if (term in cache) {
response(cache[term]);
return;
}
$.ajax({
type: 'POST',
url: someurl,
dataType: 'json',
data: { "Name": request.term},
success: function (result) {
var Surnames = JSON.parse(result.data);
cache[term] = ($.map(Surnames, function (item) {
return {
label: item.homename,
//value: item.id //<== if I do like this the id show in the text box which I do now want
value: item.homename //<== this shows correctly but the id is not accessable
}
}));
response(cache[term]);
},
error: function (a, b, c) {
debugger;
}
});
},
select: function (event, ui) {
self.Surname(ui.item.value); // save selected value
console.log(self.Surname()); // shows ID if value: item.id or just the name
},
minLength: 2
});
Вы могли бы добавить скрытое поле для хранения своего id
(пусть он будет myhiddenid
идентификатор myhiddenid
) и установить значение поля автозаполнения для метки, возвращенной из вашей функции. Добавление return false;
отменяет действие по умолчанию для события
Действие по умолчанию - заменить значение текстового поля на значение выбранного элемента.
var myhiddenid = $("#myhiddenid");
var lastname = $("#lastname");
lastname.autocomplete({
source: function (request, response) {
var term = request.term;
if (term in cache) {
response(cache[term]);
return;
}
$.ajax({
type: 'POST',
url: someurl,
dataType: 'json',
data: { "Name": request.term},
success: function (result) {
var Surnames = JSON.parse(result.data);
cache[term] = ($.map(Surnames, function (item) {
return {
label: item.homename,
value: item.id
}
}));
response(cache[term]);
},
error: function (a, b, c) {
debugger;
}
});
},
focus: function (event, ui) {
lastname.val(ui.item.label);
myhiddenid.val(ui.item.value);
return false;
},
select: function (event, ui) {
lastname.val(ui.item.label);
myhiddenid.val(ui.item.value);
self.Surname(ui.item.value);
console.log(self.Surname());
return false;
},
minLength: 2
});
<input type="hidden" id="myhiddenid" />
)