datalist要素
公開:
更新:
テキストボックスに入力するとき、ユーザーに入力候補を表示してあげることのできる要素です。
個人的には早く普及するといいなと思っています。
4.10.10 The datalist element — HTML5 では実際に試してみましょうか。 とりあえずMDNにあるのと同じもの。 このように、 また、個人的に最も素晴らしいと思っているのは、日本語の候補もちゃんと出てくれることです。 と、このように便利なわけですが、セレクトボックスの替わりに使えるかというと、それはまた別だと思います。 本音を言うと、セレクトボックスでも日本語入力でジャンプしたいんですけどね……。 仕様では どうしても似た機能を提供したければ、先ほどのリンクにあるHTML5Rocksのフォールバック方法が参考になるかと思います。 若干面倒ではありますが……。ブラウザの対応状況
「datalist landed in Chrome Canary - HTML5Rocks Updates」に、Canaryで使えるようになったときの告知もある。試してみる
まあ前のセクションでのリンク先(MDNとかHTML5Rocks)にもデモはあるんですが……。<input type="text" list="browsers">
<datalist id="browsers">
<option value="Internet Explorer">Internet Explorer</option>
<option value="Mozilla Firefox">Mozilla Firefox</option>
<option value="Google Chrome">Google Chrome</option>
<option value="Apple Safari">Apple Safari</option>
<option value="Opera">Opera</option>
</datalist>datalist要素に指定したid属性の値を、input要素のlist属性に指定することで、サジェスト機能を使用できます。datalistのいいところは、候補のテキストの中にある文字列なら、文字列の先頭でなくても判別してくれることです。
試しに「ex」とか入れてみると分かりやすいです。
Firefoxだけみたいです。OperaとChromeではできませんでした。<input type="text" list="fruits" />
<datalist id="fruits">
<option value="りんご">りんご</option>
<option value="みかん">みかん</option>
<option value="ぶどう">ぶどう</option>
<option value="さくらんぼ">さくらんぼ</option>
<option value="オレンジ">オレンジ</option>
<option value="シークヮーサー">シークヮーサー</option>
<option value="パイナップル">パイナップル</option>
<option value="桃">桃</option>
<option value="柚子">柚子</option>
<option value="枇杷">枇杷</option>
</datalist>
セレクトボックスは、制作者側が用意したものしか選択できませんが、datalist要素で候補を出せるとはいえ、こちらはinput要素です。任意の文字列を入れることもできます。
JavaScriptやHTMLフォームバリデーションで頑張ればいいのかもしれませんが、そもそもの用途が違います。datalistはあくまでも入力候補の選択肢であるということです。非対応ブラウザへのフォールバック
datalist要素は表示されない、ということになっています。
なので、対応していないブラウザでは普通のinput要素となります。<datalist id="browsers-fallback">
ご利用のブラウザを選択してください
<select>
<option value="Internet Explorer">Internet Explorer</option>
<option value="Mozilla Firefox">Mozilla Firefox</option>
<option value="Google Chrome">Google Chrome</option>
<option value="Apple Safari">Apple Safari</option>
<option value="Opera">Opera</option>
</select>
<br />
選択肢になければ、こちらにご記入ください
</datalist>
<input type="text" list="browsers-fallback" />
一応、Polyfillはあるにはあるみたいです。
個人的なサイトならもう使ってもいいかなーと思ってますが、あんまりフォーム作ることがないのでまだ使ったことはないです。
機会があったら実装してみようと思います。