前提・実現したいこと
jQuery初心者です。宜しくお願いします。
ファイルのアップロードを作ってます。
inputボタンからアップロードできたので、これをドラッグ&ドロップでも可能にしようとしてます。
発生している問題・エラーメッセージ
ドロップ時に、先に作ったアップロードの処理を呼ぼうと、trigger()を実行したのですが反応しません。
ソースコード
html
html
1 <label class="upload-img__label" > 2 <div class="upload-img__label__inner"> 3 <input class="upload-img__input" accept="image/png,image/jpeg" multiple="multiple" type="file" style="display: none;"> 4 <svg width="24" height="24" fill="#222222" fill-rule="evenodd" viewBox="0 0 24 24" aria-hidden="true" > 5 <path d="M19.3,5H16.73l-.8-1.61A.7.7,0,0,0,15.3,3H8.7a.7.7,0,0,0-.63.39L7.27,5H4.7A2.7,2.7,0,0,0,2,7.7V18.3A2.7,2.7,0,0,0,4.7,21H19.3A2.7,2.7,0,0,0,22,18.3V7.7A2.7,2.7,0,0,0,19.3,5ZM12,17.3A4.3,4.3,0,1,1,16.3,13,4.31,4.31,0,0,1,12,17.3Z"></path> 6 </svg> 7 <p class="fs12">ドラッグアンドドロップ<br>またはクリックしてファイルをアップロード</p> 8 </div> 9 </label>
inputボタンのクリックでアップロードするjs
upload.js
javascript
1$(document).on('click', '.upload-img__label', function() { 2 $('.upload-img__label').off('click'); 3 4 $('.upload-img__input').off('change'); 5 $('.upload-img__input').on('change', function (e) { 6 7 alert("dropから呼ばれない"); 8 9 // ファイル未選択なら処理を抜ける 10 c = $('.upload-img__input').val().length; 11 if(c==0){ 12 return; 13 } 14 15 16 uploadFile(e, this); 17 18 }) 19}); 20
ドラッグ&ドロップで上記のjsを呼ぶjs
drop.js
javascript
1 2 3$('.upload-img__label').on('dragstart', onDragStart); 4$('.upload-img__label').on('dragover', onDragOver); 5$('.upload-img__label').on('drop', onDrop); 6 7 8function onDragStart(e) { 9 e.originalEvent.dataTransfer.setData('text', this.id); 10} 11 12function onDragOver(e) { 13 e.preventDefault(); 14} 15 16function onDrop(e) { 17 e.preventDefault(); 18 19 alert("start"); 20 let file = e.originalEvent.dataTransfer.files; 21 $('.upload-img__input')[0].files = file; 22 $('.upload-img__input').trigger('change', e); //ここで何も起きない 23 alert("end"); 24 25} 26 27 28 29 30 31
inputボタンクリックによるアップロードは出来ております。
choromeの検証にエラーは出てません。
dropのタイミングで.upload-img__inputが認識出来ていないのでしょうか?
先輩方教えていただけないでしょうか?
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/05 06:12
2021/02/05 07:09
2021/02/08 20:57