<input type="file">を装飾する時の注意

fujihara

2014.10.15

どうもfujiharaです。ここ最近の台風ラッシュには困りました。 通勤電車が見合わせてまったく動かない経験を久々にしました。

本日は<input type="file">の装飾を行っていきます。
方法は実在する<input type="file"> を見えないようにして、 装飾可能な a要素がクリックされたタイミングで見えない input要素を クリックしてあげます。

失敗例

$('input:file').css({       //元々のファイルフォームを隠す。
  'opacity':0,
  'display':'none'
});
$('a').on('click', function(e) {  //装飾用のリンクをクリックしたタイミング
  $('input:file').click();         //ファイルフォームをクリック
  e.preventDefault();
});

実はこのままだとAndroid では動きません。前半部分のスクリプトを 以下のように修正しました。

$('input:file').css({       //元々のファイルフォームを隠す。
  position:'absolute',
  top:'-200px'
});

Andoroidの場合<input type="file"> を隠した場合それをjsでクリックさせることが 出来なかったのです。なので見えなくする方法として要素を見えない場所に飛ばしてあげて 実現させました。 Android 手ごわいです。


参考

最新記事もよろしければご覧ください

バシャログ。の購読はこちらから

RSSリーダーを乗り換えた方は再度ご登録を。

  • follow us in feedly

ページの先頭へ

アーカイブ

バシャログ。運営Webサービス

  • 当番くん - 完全無料の当番表自動生成サービス
  • CSS Selector Generator | CSS のセレクタ一覧を一発で自動生成!

お問い合わせ

※個別の技術的なご相談については弊社が通常有償で行っている業務の範疇となりますためご回答いたしかねます。
申し訳ございませんが、ご了承ください。

株式会社シーブレイン