您可以选择任何option
元素的当前select
:
mySelect.options[mySelect.selectedIndex]
我可以对DataList执行相同的操作吗?像这样:
<input id = "input" list = "datalist" type = "text" />
<datalist id = "datalist">
<option value = "No. 1"></option>
<option value = "No. 2"></option>
<option value = "No. 3"></option>
</datalist>
<script>
var datalist = document.getElementById ("datalist");
var input = document.getElementById ("input");
input.addEventListener ("keyup", function (event) {
if (event.which === 13) {
alert (datalist.options[datalist.selectedIndex]); // Example
}
}, false);
</script>
答案 0 :(得分:9)
不,datalist元素用于为输入提供自动完成功能。它是数据源,对用户隐藏,多个输入可以链接到它。因此,拥有selectedIndex
相反,您应该只检查输入的.value
:
var datalist = document.getElementById ("datalist");
var input = document.getElementById ("input");
input.addEventListener ("keyup", function (event) {
if (event.which === 13) {
alert(input.value);
}
}, false);
答案 1 :(得分:2)
根据specs判断,datalist
对象没有selectedIndex
属性。但是你可以找到它的默认选项,它有selected
。或者将输入值与每个选项值进行比较,然后手动查找索引。
答案 2 :(得分:1)
for (var i=0;i<datalist_id.options.length;i++)
if (datalist_id.options[i].value == input_id.value)
{alert(datalist_id.options[i].innerText);break;}
答案 3 :(得分:0)
您只需向input元素添加一个值即可。这将作为“默认”值显示给用户。如果用户决定更改它,即从输入字段中删除该值,则数据列表中的列表将显示:
<input list="browsers" name="browser" value="Internet Explorer">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
答案 4 :(得分:0)
假设在上面的示例中您具有数据属性,
<input list="browsers" name="browser" value="Internet Explorer">
<datalist id="browsers">
<option value="Internet Explorer" data-company="Microsoft">
<option value="Firefox" data-company="Mozilla">
<option value="Chrome" data-company="Google/Alphabet">
<option value="Opera" data-company="Opera">
<option value="Safari" data-company="Apple">
</datalist>
,并且您要获取所选项目的data-company属性,
使用上面的循环
for (var i=0;i<datalist_id.options.length;i++) {
if (datalist_id.options[i].value == input_id.value) {
// obtains the data-company attrbute
console.log(datalist_id.options[i].getAttribute("data-company");
alert(datalist_id.options[i].innerText);
break;
}
}