使用自动完成未正确选择项目
Item not correctly selected with autocomplete
我在 Jquery 中有一个带有自动 select 的文本字段,当您键入三个字母时,您会从数据库中获得查询并显示一些数据。我需要从 _renderItem 方法获取 id 属性,但我没有正确获取它。下面是我的代码:
$("#textField").autocomplete({
minLength: 3,
source: function(request, response) {
var loadIdentities = "<?php echo $this->Html->url(array('controller' => 'Identities', 'action' => 'getIdentity')); ?>/" + Base64.encode(request.term);
$.getJSON(loadIdentities, function(data) {
response(data);
});
}
}).data("ui-autocomplete")._renderItem = function(ul, item) {
console.log(item.id);
return $("<li>")
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};
在行 console.log(item.id) 中,我没有得到正确的值。当您 select 用鼠标单击自动完成列表中的元素时会发生这种情况,当您单击 item.id 时未正确更新,并且显示的值而不是正确的 item.id 是一个当你为自动完成打字时有的。
例如,如果您在文本字段中键入姓名 "John Smith",您将在自动完成中获得两个选项:John Smith 和 John Smithson。如果您 select 单击 "John Smithson" 选项,您将获得 item.id 值 "John Smith",而我想要 "John Smithson"
我该如何解决这个问题?
我能够使用 select 自动完成方法解决这个问题:
select: function( event, ui ) {
$("[name='elementName[0]']").val(ui.item.label);
$("[name='elementID[0]']").val(ui.item.id);
return false;
}
我把它放在源代码之后,现在可以用了。
我在 Jquery 中有一个带有自动 select 的文本字段,当您键入三个字母时,您会从数据库中获得查询并显示一些数据。我需要从 _renderItem 方法获取 id 属性,但我没有正确获取它。下面是我的代码:
$("#textField").autocomplete({
minLength: 3,
source: function(request, response) {
var loadIdentities = "<?php echo $this->Html->url(array('controller' => 'Identities', 'action' => 'getIdentity')); ?>/" + Base64.encode(request.term);
$.getJSON(loadIdentities, function(data) {
response(data);
});
}
}).data("ui-autocomplete")._renderItem = function(ul, item) {
console.log(item.id);
return $("<li>")
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};
在行 console.log(item.id) 中,我没有得到正确的值。当您 select 用鼠标单击自动完成列表中的元素时会发生这种情况,当您单击 item.id 时未正确更新,并且显示的值而不是正确的 item.id 是一个当你为自动完成打字时有的。
例如,如果您在文本字段中键入姓名 "John Smith",您将在自动完成中获得两个选项:John Smith 和 John Smithson。如果您 select 单击 "John Smithson" 选项,您将获得 item.id 值 "John Smith",而我想要 "John Smithson"
我该如何解决这个问题?
我能够使用 select 自动完成方法解决这个问题:
select: function( event, ui ) {
$("[name='elementName[0]']").val(ui.item.label);
$("[name='elementID[0]']").val(ui.item.id);
return false;
}
我把它放在源代码之后,现在可以用了。