こちらの私の質問の続きになります。
input type file プレビュー画像のリセット
おかげさまで、
input file プレビュー画像のリセットができました。
しかし1点、私にとって不都合がありました。
それは、<form>〜</form>が複数ある場合です。
.previewと.deleteの全てremoveの対象になってしまいます。
実現したいことは、
同一ページ内に<form>タグが複数あり
それぞれ独立しています。
中身の要素は同じです。
それぞれのformにある、
type=fileにて、画像のリセットが独立している、他のformに影響を与えない仕様になります。
これを、隣接する、もしくは同じ階層の
.previewと.deleteのみをremoveの対象とするコードにすれば
解決できると思いましたが、試行錯誤しているのですが分かりません。
アドバイス頂ければ幸いです。
どうぞよろしくお願い致します。
javascript
1$(function(){ 2$('input[type=file]').on('change', function () { 3var self=$(this); 4var file = $(this).prop('files')[0]; 5var reader = new FileReader(); 6reader.addEventListener('load',e=>{ 7$('.preview').remove(); 8$('.delete').remove(); 9self.closest('.camera-wrap') 10.append($('<img class="preview">').attr({src:e.target.result})) 11.append($('<button type="reset" class="delete"></button>')); 12}); 13reader.readAsDataURL(file); 14}); 15$('form').on('reset',function(){ 16$('.preview').remove(); 17$('.delete').remove(); 18}); 19});
html
1<form method="post" enctype="multipart/form-data"> 2<div class='camera-wrap'><label class='camera' for='camera'><input type="file" id='camera' name='file'></label></div> 3</form>
以下がinput fileがクリックされたときのコードになります。
html
1<form method="post" enctype="multipart/form-data"> 2<div class="camera-wrap"><label class="camera" for="camera"><input type="file" id="camera" name="file"></label><img class="preview" src=""><button type="reset" class="delete"></button></div> 3</form> 4 5<form method="post" enctype="multipart/form-data"> 6<div class="camera-wrap"><label class="camera" for="camera497"><input type="file" id="camera497" name="file"></label><img class="preview" src=""><button type="reset" class="delete"></button></div> 7</form>
回答1件
あなたの回答
tips
プレビュー