11

您可以选择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>
4

6 回答 6

10

不,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);
于 2011-01-18T13:50:24.460 回答
2

specs来看,datalist对象没有selectedIndex属性。但是你可以找到它的默认选项,它有selected. 或者将输入的值与每个选项值进行比较并手动查找索引。

于 2011-01-18T13:49:54.183 回答
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;}
于 2013-05-07T05:57:34.520 回答
1

假设您在上面的示例中具有这样的数据属性,

<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;
    }
}
于 2018-06-23T17:18:29.090 回答
0

您可以只向输入元素添加一个值。这将作为“默认”值显示给用户。如果用户决定更改它,即从输入字段中删除此值,则 datalist 中的列表将显示:

<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>
于 2015-05-24T08:07:36.317 回答
0

SelectedIndex这是从of获取索引的脚本Datalist。来自@pingle60 的 HTML

let x = document.getElementById("browsers").options;
let input = document.querySelector('input');
input.onchange = getIndex;

function getIndex(e) {
    for (var i=0;i<x.length;i++) {
        if (x[i].value == e.target.value) {
            return i;
            // alert('The index of SellectedIndex is : ' + i + ' and the value is : '  +x[i].value);
            break;
        }
    }   
}
于 2021-08-14T00:34:03.370 回答