datalist
w3 datalist要素の仕様で示されているように、古いブラウザ用のフォールバックが組み込まれた要素を実装しようとしています:
<form action="http://example.com/" method="GET">
<label>
Sex:
<input name="sex" list="sexes" />
</label>
<datalist id="sexes">
<label>
or select from the list:
<select name="sex">
<option value="" />
<option>Female</option>
<option>Male</option>
</select>
</label>
</datalist>
<input type="submit" />
</form>
ただし、<input type="text">
と のdatalist
両方を同じ名前 (フォールバックに必要) で組み合わせると、"sex" パラメーターがクエリ文字列に 2 回表示されます。
SO コード スニペットではフォーム送信が機能しなかったため、代わりにこのフィドルを参照してください。「男性」を送信すると、ネットワーク タブに、送信時に という要求が表示されますhttp://www.example.com/?sex=male&sex=
。
これにより、バックエンド コードで不安定な動作が発生します (残念ながら、現時点では変更できません)。フォールバックを維持しながら double パラメータを防ぐにはどうすればよいですか?