ファイルアップロードのデザイン変更方法
ファイルアップロードのデザイン変更って面倒だと思っていたけど、案外すっきり出来た。
以下、参考にした丁寧にまとまっている記事↓
【jQuery】ファイル選択フォームデザインのカスタマイズ方法 | WebTerminal
これで一件落着と思いきや、案の定IEがダタをこねて動こうとしない。
なので今回はIEの場合は放置でそれ以外の場合だけデザインすることにした。(普通は駄目だけど)
<script> $(function() { // IEの場合、フォームデザインしない var chkIE = function(){ var ua = window.navigator.userAgent.toLowerCase(); return (ua.indexOf("msie") != -1) ? true : false; }; if (chkIE()) { $("#not_ie").remove(); $("#ie").css('display', ''); } else { $("#ie").remove(); $("#not_ie").css('display', ''); } }); </script>
html
<div id="not_ie" style="display:none"> <input style="display:none" type="file" name="data[file]" id="file_name" onchange="$('#file_text').val($(this).val());"> <input type="text" id="file_text" readonly="readonly" value="" /> <input type="button" value="参照..." onclick="$('#file_name').click()" /> </div> <div id="ie" style="display:none"> <input type="file" name="data[file]" /> </div>
cssを駆使すればIEにも対応できるっぽいけど、面倒なので今回は無しで。
後、FFの場合だとファイル名のみだけど、chromeの場合だとパスがfakepathとかになるのが少し気になるところではある・・