<input list=データリストID>は、入力欄とデータリストを紐づける際に使用します。
input要素のlist属性は、
そのinput要素が
どのdatalist要素と関連しているのか識別するために使用されます。
input要素にlist属性が存在する場合、
その値は同じツリー内のdatalist要素のIDと一致している必要があります。
datalist要素で定義したデータリストは、
ユーザーエージェントがオートコンプリートなどでユーザーに入力提案する際に使用されます。
以下のサンプルは、JavaScript関数のタイプをオートコンプリートで入力きるように、
入力候補となるデータリストを用意しています。
input要素のlist属性の値と
datalist要素のid属性の値を一致させることで、
入力欄とデータリストが紐づけられています。
<form method="post" action="step2.cgi">
<p>
<label>関数タイプ:<input type="text" name="ftype" list="function-types"></label>
<datalist id="function-types">
<option>function</option>
<option>async function</option>
<option>generator function</option>
<option>arrow function</option>
<option>async arrow function</option>
<option>async generator function</option>
</datalist>
</p>
<p><input type="submit" value="次へ"></p>
</form>
以下のサンプルは、データテキストをoption要素のvalue属性の値として配置しており、option要素の内容としてインラインには配置していません。
このような配置にすると、datalist要素をサポートしていない旧いブラウザでは、
オートコンプリートのリストは表示されないようです。
(筆者は旧いブラウザでの動作確認はしていませんが、仕様ではそのように解説されています。)
<p>
<label>
品種を入力:
<input type="text" name="breed" list="breeds">
<datalist id="breeds">
<option value="アビシニアン">
<option value="マンチカン">
<option value="ラグドール">
</datalist>
</label>
</p>
以下のサンプルでは、URL入力欄にdatalist要素で定義したオートコンプリートのリストが表示されます。
ユーザーエージェントによっては、ユーザーの履歴にある他のURLが表示される可能性もあります。
<label>ホームページ: <input name=hp type=url list=hpurls></label>
<datalist id=hpurls>
<option value="https://www.google.com/" label="Google">
<option value="https://www.yahoo.co.jp/" label="Yahoo! JAPAN">
</datalist>
HTMLの仕様では、input要素には終了タグ</input>はありません。