我尝试使用HTML5 datalist属性使用自动完成下拉菜单,而不使用JQuery。但是我希望每个建议在被选中后进入特定的链接(或者当按下输入时,转到第一个建议)。
我现在拥有的是:
<form action="www.site.com/search?q=" method="get">
<input name="q" type="text" id="txtAutoComplete" list="languageList"/>
<datalist id="languageList">
<option value="OPTION1" />
<option value="OPTION2" />
</datalist>
</form>
在这种情况下,它会在网站中执行搜索。我希望每个选项都能打开一个特定的链接,或者在链接http://www.hitsebeats.ninja/search/label/ VALUE_HERE 的末尾使用值,这将转到Blogger中的正确标签。在最后一种情况下,我考虑添加事件onclick
:
<datalist id="languageList" onclick='location=this.options[this.selectedIndex].value;>
<option value='http://www.hitsebeats.ninja/search/label/OPTION1'>
OPTION1
</option>
</datalist>
但没有成功。
答案 0 :(得分:1)
在评论中的OP反馈后添加另一个答案。仅当数据列表中存在键入的选项时,才应重定向。
<script>
function redirect(value) {
var options = document.getElementById("languageList").options;
for(var i = 0; i < options.length; i++) {
if (options[i].value == value)
window.location='http://www.example.com/' + value;
};
}
</script>
<form action="http://www.example.com/search?q=" method="get">
<input name="q" type="text" id="txtAutoComplete" list="languageList" onchange="redirect(this.value)" />
<datalist id="languageList">
<option value='OPTION1'>OPTION1</option>
<option value='OPTION2'>OPTION2</option>
</datalist>
</form>
<小时/>
在输入元素上使用oninput
,您可以根据您选择的选项更改位置。
<form action="http://www.example.com/search?q=" method="get">
<input name="q" type="text" id="txtAutoComplete" list="languageList" onchange="window.location='http://www.example.com/' + this.value" />
<datalist id="languageList">
<option value='OPTION1'>OPTION1</option>
<option value='OPTION2'>OPTION2</option>
</datalist>
</form>
告诉我这是不是你的期望。
答案 1 :(得分:0)
所以,你知道,datalist没有选择事件,它不是用户控件。但您可以收听输入更改事件,并使用它来更改网址。