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

仕様から判断すると、オブジェクトにはプロパティ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

入力要素に値を追加するだけです。これは、「デフォルト」値としてユーザーに表示されます。ユーザーが値を変更することを決定した場合、つまり入力フィールドからこの値を削除すると、データリストのリストが表示されます。

<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 に答える