gpt4 book ai didi

javascript - 重定向自动完成

转载 作者:行者123 更新时间:2023-12-01 03:50:34 28 4
gpt4 key购买 nike

我正在使用awesomplete autocomplete plugin我需要重定向我在单击任何结果时选择的项目,例如我编写了一个 Javascript,在单击它之后它必须重定向我想要的任何页面。我看到 events但我不知道如何使用它

我的结构

$(document).ready(function() {

});
.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;
}

@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;
}
<input class="awesomplete dropdown-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>


<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>

最佳答案

没有原生支持获取所选项目的属性。

要绑定(bind)事件,请在所选选择器上使用 on 函数。

为了获取data-link属性,您需要获取datalist并找到带有文本值的option

Awesoplete 触发事件两次 - 一次在输入字段上,一次在包含的 div 上。我通过检查 div 的同级是否为 datalist 来监听 div 上的事件。完成后,我会使用 :contains 选择器找到所需的选项,并传入输入字段值。

我必须将其包装在 setTimeout 函数中,因为此时 Awesoplete 尚未填充输入字段的 value 属性。

$(document).ready(function() {
$('.awesomplete').on('awesomplete-select', function(){
var $this = $(this),
$sibling = $this.next();
if($sibling.attr('id') == 'mylist') {
setTimeout(function(){
var val = $this.find('input').val();
var dataLink = $sibling.find('option:contains("' + val + '")').data('link');
console.log(dataLink);
//location.href = dataLink;
}, 500);
}
});
});
.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;
}

@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;
}
<input class="awesomplete dropdown-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>


<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>

关于javascript - 重定向自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43249488/

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