経緯
すごくレアケースだとは思いますが、
たとえばファイルアップロードのボタンのデザインを変えようとして以下のようなHTMLを書いたとします。
<input type="file" id="file" style="display: none">
<button type="button" onclick="$('#file').click()">
すると、普通にファイルを選択できて、ボタンのデザインも変えやすいです。
問題
しかし、IE8においてはこれが動きません。
どうやらちゃんとファイル選択欄からファイルを選択しないと、submit時に弾かれてしまうようです。
原因
IE8以前にのみ存在するセキュリティホールらしいですが、中途半端に対応されている感じですね。
対策
ちょこざいなことはしないで普通にinputタグを使おう
環境
最後に
なんで2018年にIE8向けの開発をしてるんだ