自动完成标签在显示后未在显示为display:none的隐藏输入字段上不显示数据。
我正在尝试使用下面给出的脚本自动完成MySQL数据库中的数据。在开发人员工具网络控制台中给出正确响应时,它没有显示标签。当我使用.show()方法显示div时,自动完成功能不会显示标签。
function openSearchDiv(){
$('.search').show();
}
$(document).on('focus','#search',function(){
$(this).autocomplete({
source: function( request, response ) {
$.ajax({
url: 'products.php',
dataType: 'json',
method: 'post',
data: {
name_startsWith: request.term,
type: 'type'
},
success: function( data ) {
response( $.map( data, function( item ) {
return {
label: item['id'],
value: item['id'],
data : item
}
}));
}
});
},
autoFocus: true,
minLength: 1,
select: function( event, ui ) {
// $('#player').val(ui.item.data.player);
// $('#marks').val(ui.item.data.marks);
}
});
});
.search {
display:none;
margin-top: 20px;
}
<div class="search">
<input type="text" id="search" placeholder="Type Id" />
</div>
我已经从display:none
属性中检查了这段代码,它运行正常
答案 0 :(得分:1)
因此,如果您查看my Fiddle,我使用的是jQuery 3.3.1版和jQuery UI 1.12.1版(即撰写时的稳定版本)。
但是在your Fiddle上,您使用的是带有jQuery UI 1.11.4(旧版)的jQuery 3.3.1。这是一个问题,因为在jQuery 3.3.1中,您应该使用jQuery UI 1.12.1。
如果要使用jQuery UI 旧版本,则应使用jQuery 2.2.4或更早版本。 此外,根据您的情况,应将appendTo
选项设置为适当的元素/选择器。示例:
$('#search').autocomplete({
appendTo: $('#search').parent()
// other options
});
我已经分叉了您的小提琴,您可以检查我的here,在这里我基本上省略了AJAX内容,但是我没有更改任何CSS,而是将 jQuery 2.2.4与jQuery UI 1.11一起使用。 4 。
我也分叉了Fiddle,并将其更改为使用 jQuery 3.3.1 和jQuery UI 1.12.1 。您可以检查它here。