gpt4 book ai didi

jquery 自动完成列表不坚持父输入元素

转载 作者:技术小花猫 更新时间:2023-10-29 10:55:57 25 4
gpt4 key购买 nike

我在调整 jqueryUI 自动完成以适应我网站的 CSS 布局时遇到了一些困难。

每当我在输入字段上调用自动完成功能时,列表都会按预期打开。由于输入位于固定高度的 div 中,因此当用户滚动该 div 时,自动完成列表保持固定。

有没有人遇到过这个并且知道解决方法?当父 div 的高度不固定时,不会出现此问题。

我在这里制作了一个 jsfiddle 模型:http://jsfiddle.net/NSm7f/1/

这是我的示例代码:

<div class="root">
<div id="Header">
<div class='heading'>Test</div>
</div>
<div class='box' id="Wrapper">
<div class='box' id="Leftpanel">
<p>some text</p>
<h1>Other stuff</h1>

<br>
<br>Autocomplete box:
<input id="box1">
<p>some text</p>
<h1>Other stuff</h1>

<br>
<br>Another autocomplete:
<input id="box2">
<p>some text</p>
<h1>Other stuff</h1>

<br>
<br>
<p>some text</p>
<h1>Other stuff</h1>

<br>
<br>
<p>some text</p>
<h1>Other stuff</h1>


<br>
<br>
</div>
<!--Leftpanel-->
<div class='box' id="Rightpanel">
<form>
<textarea rows="33" cols="45"></textarea>
<br>
</form>
</div>
<!--End rightpanel-->
</div>
<!--wrapper-->
</div>
<!--root-->

我的 JS(是的,我加载了 jqueryUI 和默认的 jqueryUI css):

 $("#box1").autocomplete({
source: ['Skull,Nasal', 'Skull,Lacrimal', 'Skull,Inferior Nasal Concha', 'Skull,Maxiallary', 'Skull,Zygomatic', 'Skull,Temporal', 'Skull,Palatine', 'Skull,Parietal', 'Skull,Malleus', 'Skull,Incus', 'Skull,Stapes', 'Skull,Frontal', 'Skull,Ethmoid', 'Skull,Vomer', 'Skull,Sphenoid', 'Skull,Mandible', 'Skull,Occipital', 'Rib 1', 'Rib 2', 'Rib 3', 'Rib 4', 'Rib 5', 'Rib 6', 'Rib 7', 'Rib 8 ', 'Rib 9 ', 'Rib 10 ', 'Coccyx']
});

$("input#box2").autocomplete({
source: ['Skull,Nasal', 'Skull,Lacrimal', 'Skull,Inferior Nasal Concha', 'Skull,Maxiallary', 'Skull,Zygomatic', 'Skull,Temporal', 'Skull,Palatine', 'Skull,Parietal', 'Skull,Malleus', 'Skull,Incus', 'Skull,Stapes', 'Skull,Frontal', 'Skull,Ethmoid', 'Skull,Vomer', 'Skull,Sphenoid', 'Skull,Mandible', 'Skull,Occipital', 'Rib 1', 'Rib 2', 'Rib 3', 'Rib 4', 'Rib 5', 'Rib 6', 'Rib 7', 'Rib 8 ', 'Rib 9 ', 'Rib 10 ', 'Coccyx']
});

和我的CSS:

.box {
float: left;
}
#root {
max-width: 1200px;
margin: 0 auto;
}
#Wrapper {
width: 100%;
display: table;
}
#Leftpanel, #Rightpanel {
vertical-align: top;
}
#Leftpanel {
width: 57%;
display: table-cell;
height:750px;
color: #B29D72;
overflow:scroll;
background-color: #272F44;
-moz-border-radius: 2px;
border-radius: 5px;
padding: 1%;
margin:0.5%
}
#Rightpanel {
width: 37%;
display: table-cell;
height: 750px;
color: #B2A283;
background-color: #0D162C;
-moz-border-radius: 5px;
border-radius: 5px;
padding: 1%;
margin:0.5%
}
#Sidebar {
width: 15%;
background-color: #B2A283;
color: #0D162C;
padding:1%;
margin:0.5%;
-moz-border-radius: 2px;
border-radius: 5px;
}
#Sidebar a:link {
color: #FFF4CB;
}
#Footer {
width: 97%;
height: auto;
background-color: #B2A283;
color: #0D162C;
padding: 1%;
margin: 0.5%;
-moz-border-radius: 2px;
border-radius: 5px;
}
#Footer a:link {
color: #FFF4CB;
padding-left: 5px;
padding-right: 5px;
}
#Footer A:hover {
color: #CA9221;
}
#Sidebar .slide-out-div {
padding: 20px;
width: 250px;
background: #ccc;
border: 1px solid #29216d;
}

最佳答案

这是一个不涉及任何脚本的解决方案,似乎可以解决问题。

默认情况下,自动完成会将列表附加到文档的 body 中。如果您将选项插入 appendTo: "parent div that is fixed height" 并将 ui-autocomplete 的 UI-css 类从 postion:fixed 更改为 position:relative,该列表将跟随 div 滚动。

我认为这是一个更容易实现的解决方案,尽管@Trevor 的也可以。

查看更新后的 fiddle :http://jsfiddle.net/NSm7f/3/

关键是将此添加到您的文档或更改 UI-css:

.ui-autocomplete {
position: relative;
}

关于jquery 自动完成列表不坚持父输入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20807964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com