未保存Jquery自动完成所选id
由于某些原因,我试图从jquery自动完成中获取所选的值,但无法获取id。我在这里看到了一个解决方案,但我的数据返回如下所示:如何保存id 我的数据未保存Jquery自动完成所选id,jquery,jquery-autocomplete,Jquery,Jquery Autocomplete,由于某些原因,我试图从jquery自动完成中获取所选的值,但无法获取id。我在这里看到了一个解决方案,但我的数据返回如下所示:如何保存id 我的数据 [{"id":3,"homename":"DCosta"}] 我的代码 $("#lastname").autocomplete({ source: function (request, response) { var term = request.term; if (term in cache) {
[{"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
});
$(“#lastname”).autocomplete({
来源:功能(请求、响应){
var term=request.term;
if(缓存中的术语){
响应(缓存[术语]);
返回;
}
$.ajax({
键入:“POST”,
url:someurl,
数据类型:“json”,
数据:{“Name”:request.term},
成功:功能(结果){
var姓氏=JSON.parse(result.data);
cache[term]=($.map)(姓氏、函数(项){
返回{
标签:item.homename,
//value:item.id/您可以添加一个隐藏字段来存储id
(让我们给它一个idmyhiddenid
),并将自动完成字段的值设置为从函数返回的标签。添加return false;
将取消事件的默认行为
默认操作是用选定项的值替换文本字段的值
当我添加此值时:item.id文本框显示id。我也添加了$('lastname').val(ui.item.label);并假设它将在文本框中显示标签值,但什么也没有发生。添加此myhiddenid.val(ui.item.value);如果您在屏幕上创建了一个隐藏的输入,请给UndefinedId(
)Ah missed将尝试并让您知道id仍然显示在文本框中我是否遗漏了任何内容。这是我所做的$('#lastname').val(ui.item.label);self.姓氏(ui.item.value);//保存所选值$('#myhiddenid').val(ui.item.value);@Adrian-我更新了答案。我还包括了一个焦点:
事件,并指出了事件的默认行为。由于您希望显示标签而不是值,因此需要手动执行此操作(使用我们已经完成的.val()
行),然后返回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
});