ロックとチュウーハイとこりんがるな日々

日々のインプットした事をアウトプットする場所

twitter bootstrapでファイルアップロードボタンを綺麗にする

html

<input class="input-file" id="fileInput" type="file" style="display:none;">
<div class="input-append">
  <input class="span2" id="photo-dummy" type="text">
  <button class="btn btn-success" onclick="$('input[id=fileInput]').click();" type="button">写真を選択する</button>
</div>

Javascript

$('input[id=fileInput]').change(function(){
   $("#photo-dummy").val($(this).val());
});

1. html部分、「input type="file"」は「style="display:none;"」で見えなくする

  <input class="input-file" id="fileInput" type="file" style="display:none;"> 

2. 新しくアップロードボタンを作成する(ダミー)

<div class="input-append">
  <input class="span2" id="photo-dummy" type="text">
  <button class="btn btn-success" onclick="$('input[id=fileInput]').click();" type="button">写真を選択する</button>
</div>

3. 作成したアップロードボタン(ダミー)をクリックされたら見えなくした「input type="file"」がクリックされるようにjavascriptを仕込む

  onclick="$('input[id=fileInput]').click();"

4. 見えなくした「input type="file"」に表示されているファイルパスをjavascriptで取得して作成したアップロードボタン(ダミー)にファイルパスが表示されるようにする

$('input[id=fileInput]').change(function(){
   $("#photo-dummy").val($(this).val());
});
  • 見えなくした「input type="file"」が変更された場合
  • 見えなくした「input type="file"」に表示されたテキスト部分を取得
  • 作成したアップロードボタン(ダミー)のテキスト部分に取得したファイルパスを表示させる

>> Pretty file input field in Bootstrap|duckranger