以下のスニペットでは、アイテムを選択する2つの方法があります:データリストの入力とオプションの従来の選択。隠しデータリストオプションの値を設定する
select要素はオプション値を非表示にしておきますが、まだthis.value
で取得できます。ただし、データリストでは、値が実際に表示され、オプションのテキスト内容がセカンダリラベルとして表示されます。
私が望むのは、input + datalistのアプローチは、 "Foo"と "Bar"がそれぞれ "1"と "2"の値を持つオプションとして表示される従来のselectのように振舞うことです。
また、値 "3"の繰り返し名 "Foo"を追加しました。これは、すべてのソリューションが独自のオプションに依存してはならないことを示しています。
<input list="options" onchange="console.log(this.value)"/>
<datalist id="options">
<option value="1">Foo</option>
<option value="2">Bar</option>
<option value="3">Foo</option>
</datalist>
<select onchange="console.log(this.value)">
<option value=""></option>
<option value="1">Foo</option>
<option value="2">Bar</option>
<option value="3">Foo</option>
</select>
私は、このリンクを使用すると、[どのようツー表示 - テキストベースたいものを答えだと思いますin-datalist-html5-and-not-value](http://stackoverflow.com/questions/25616625/how-to-display-the-text-in-datalist-html5-and-not-value) – Arjun
@Arjunありがとう、私はそのポストも見つけましたが残念ながらそれは一意の表示値しかサポートしていません。たとえば、私の例の別のオプションが値 "3"の "Foo"だった場合、それを選択すると、 "3"の代わりに "1"の値が生成されます。 –
テキストが 'Foo'になったら、ユーザが' 1'と入力すればどうなるでしょうか?ユーザーが 'Foo'を手動で入力すると' .value'は '1'または' 3'を返すべきですか? – Oriol