知名度が低いウェブ標準ひとり Advent Calendar 2021 – 18 日目
今日は <datalist>
です。コンボボックスを作れます。
基本的な使い方
<select>
のように複数の <option>
を子に持ちます。画面には描画されません。連携したい <input>
の方からは ID を list
属性で指定します。
<input list="my-list" /> <datalist id="my-list"> <option value="Apple">Apple</option> <option value="Banana">Banana</option> <option value="Cherry">Cherry</option> </datalist>
value
と内容 (textContent
) が異なる場合
Chrome だと内容が補助文みたいな感じで表示されました。
<option value="same">same</option> <option value="value">Text</option>
Firefox では value
ではなく <option>
の内容のみが表示されます。
いずれも value
と内容両方の内容でフィルタリングできるようです。また選択すると <input>
には value
の内容が入力されます。
Safari は見てないです。
Firefox Mobile でバグってる
早い段階で対応したものの 3 年前から動いてないみたいです。
PC 版は大丈夫。iOS も中身が WebKit なので影響を受けないはず。
<select>
との違い
<select>
は選択肢の中から選ぶのに対し、<datalist>
は補助的に入力を提案するのみで、<input>
へは任意の値を入力可能です。
「一覧から選択」したイベントも存在しません。あくまで入力が変更されたときだけです。
おしまい
逆に自由入力はできないけどフィルタリング可能な <select>
も欲しい。