HTML5 DataList是否有SelectedIndex?

11

您可以选择任何

6个回答

10
不,datalist元素是用于为输入提供自动完成功能的。它是数据源,对用户隐藏,并且多个输入可以链接到它。因此,拥有selectedIndex没有意义。
相反,你应该简单地检查输入的.value属性:

不,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);

8
注意:当用户从数据列表中点击下拉项(鼠标单击),不会触发任何事件(Chrome21)。 - Dmitrii Sorin
3
建议将事件监听器更改为input,因为这样做也可以解决Dmitry提出的问题。 - Some Guy

2
根据规格datalist对象没有selectedIndex属性。但是你可以找到它的默认选项,该选项具有selected属性。或者将输入值与每个选项的值进行比较,并手动找到索引。

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

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

0

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

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

0
这是从 DatalistSelectedIndex 获取索引的脚本。来自 @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;
        }
    }   
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接