##1 前提・実現したいこと
お世話になっております。
アップロードする前に複数ファイルのファイル名を表示したいと考えております。
実現したいこと
DB等にアップロードする前に選択したファイル名の表示。
input入力項目の上あたりにファイル名を表示したい。
例
○○.txt
□□.jpg
以下、input入力項目
##2 発生している問題
単一での表示はできるが、複数表示ができない。
##3 該当のソースコード
選択ボタンを押したら、エクスプローラーが開いてファイルを選択する。
html
1<tr class="tenpu_docs"> 2 <th class="v_top">添付資料</th> 3 <td> 4 <div class="file_row"> 5 <div class="file_wrapper"> 6 <input type="file" name="tenpu_file[]" th:field="*{icon_file}" id="docs" th:path="*{icon_file}" multiple="multiple"/> 7 <p class="file_name_keeper"> </p><label for="docs">選択</label> 8 </div> 9 </div> 10 <p style="color: #FF0000;" th:if="${#fields.hasErrors('*{icon_file}')}" th:errors="*{icon_file}"></p> 11 </td> 12</tr>
javascript
1//アップロードファイル選択 2$(document).on('change','tr.tenpu_docs input[type="file"]', function () { 3 var files = $(this).prop('files'); 4 var len = $files.length; 5 6 for (var i=0; i < len; i++) { 7 var fileData = $files[i]; 8 var fileName = '<a th:href="#" target="_blank">'+fileData.name+'</a>'; 9 10 //ファイル名を表示 11 $(this).closest('div').find('p.file_name_keeper').html(fileName).addClass('on_keep'); 12 } 13})
##4 自分で調べてやったこと
ループを回すみたいなので、for文を追加したが1つのファイルしか表示できなかった。