gpt4 book ai didi

javascript - 在 awesomeplete 中向下拉自动完成添加图像,提交按钮然后向下移动,重置其位置?

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:59 25 4
gpt4 key购买 nike

首先让我说我能够在这里找到一个很好的答案,我已经能够使用它来将图像添加到由 awesomeplete 创建的下拉菜单中,并且效果很好。我遇到的问题是我的 awesomeplete 元素是表单的一部分,因此当下拉自动完成显示时,表单提交按钮被按下几行。一旦选择了一个值,我希望提交按钮返回到它之前的位置,而不是停留在页面的较低位置。

这是我正在使用的代码,主要是从第一个答案复制而来:Adding image in option (我添加的唯一部分是围绕输入元素及其提交按钮的表单)

var imgList = new Object();
imgList["Ada"] = "http://www.maglioccola.com/images/add-1.png";
imgList["Java"] = "http://www.maglioccola.com/images/add-2.png";
imgList["JavaScript"] = "http://www.maglioccola.com/images/add-3.png";
imgList["Brainfuck"] = "http://www.maglioccola.com/images/add-4.png";
imgList["LOLCODE"] = "http://www.maglioccola.com/images/add-4.png";
imgList["Node.js"] = "http://www.maglioccola.com/images/add-4.png";
imgList["Ruby on Rails"] = "http://www.maglioccola.com/images/add-4.png";

$(document).ready(function() {
var input = document.getElementById("my-input");
var awesomplete = new Awesomplete(input, {
item: myItemFunc
});;
});

function myItemFunc(text, input){
return Awesomplete.$.create("li", {
innerHTML: createItem(text,input),
"aria-selected": "false"
});
}

function createItem(text, input){
var img = document.createElement("img");
img.style.height = '16px';
img.src = imgList[text.label];
var html = img.outerHTML + " " + text.label;
return html;
}
.awesomplete>ul {
border-radius: .3em;
margin: .2em 0 0;
background: hsla(0, 0%, 100%, .9);
background: linear-gradient(to bottom right, white, hsla(0, 0%, 100%, .8));
border: 1px solid rgba(0, 0, 0, .3);
box-shadow: .05em .2em .6em rgba(0, 0, 0, .2);
text-shadow: none;
list-style: none;
}

@supports (transform: scale(0)) {
.awesomplete>ul {
transition: .3s cubic-bezier(.4, .2, .5, 1.4);
transform-origin: 1.43em -.43em;
}
.awesomplete>ul[hidden],
.awesomplete>ul:empty {
opacity: 0;
transform: scale(0);
display: block;
transition-timing-function: ease;
}
}


/* Pointer */

.awesomplete>ul:before {
content: "";
position: absolute;
top: -.43em;
left: 1em;
width: 0;
height: 0;
padding: .4em;
background: white;
border: inherit;
border-right: 0;
border-bottom: 0;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}

.awesomplete>ul>li {
position: relative;
padding: .2em .5em;
cursor: pointer;
}

.awesomplete>ul>li:hover {
background: hsl(200, 40%, 80%);
color: black;
}

.awesomplete>ul>li[aria-selected="true"] {
background: hsl(205, 40%, 40%);
color: white;
}

.awesomplete mark {
background: hsl(65, 100%, 50%);
}

.awesomplete li:hover mark {
background: hsl(68, 100%, 41%);
}

.awesomplete li[aria-selected="true"] mark {
background: hsl(86, 100%, 21%);
color: inherit;
}
<form action="myscript.php" method="POST"><input list="mylist" id="my-input" />
<datalist id="mylist">
<option data-link="http://www.google.com">Ada</option>
<option data-link="http://www.yahoo.com">Java</option>
<option data-link="http://www.bing.com">JavaScript</option>
<option data-link="http://www.yandex.com">Brainfuck</option>
<option data-link="http://www.php.net">LOLCODE</option>
<option data-link="http://www.asp.net">Node.js</option>
<option data-link="http://www.microsoft.net">Ruby on Rails</option>
</datalist><br/><button type="submit">Submit</button></form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/awesomplete/1.1.1/awesomplete.min.js"></script>

最佳答案

用于隐藏自动完成弹出窗口的 css 代码只是进行视觉隐藏,没有从布局计算中删除对象,与 display:block 一样,div 仍然占用所需的空间量就好像它是可见的,插入布局中的所有其他元素。最简单的方法是使用以下内容:

.awesomplete>ul[hidden],
.awesomplete>ul:empty {
...
display: none;
}

关于javascript - 在 awesomeplete 中向下拉自动完成添加图像,提交按钮然后向下移动,重置其位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54060090/

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