ファイルアップローダが50個以上存在するフォームがあります。
すべてにaddEventListenerを持たせたいのですが、
Javascript
1 2$(function() { 3var filesizeLimit = 1024 * 1024 * 5; 4 5// 1個目のアップローダ 6var fileInput01 = document.getElementById('image01'); 7fileInput01.addEventListener('change', function(e){ 8 var file = e.target.files[0]; 9 if (file.size > filesizeLimit) { 10 alert("ファイルサイズ上限は5MBです。"); 11 fileInput01.value = ""; 12 return; 13 }else{ 14 var file = e.target.files[0]; 15 var blobUrl = window.URL.createObjectURL(file); 16 $('#image01-preview').attr('src', blobUrl); 17 } 18}, false); 19 20// 2個目のアップローダ 21var fileInput02 = document.getElementById('image02'); 22fileInput02.addEventListener('change', function(e){ 23 var file = e.target.files[0]; 24 if (file.size > filesizeLimit) { 25 alert("ファイルサイズ上限は5MBです。"); 26 fileInput02.value = ""; 27 return; 28 }else{ 29 var file = e.target.files[0]; 30 var blobUrl = window.URL.createObjectURL(file); 31 $('#image02-preview').attr('src', blobUrl); 32 } 33}, false); 34 35……………………以下全50個 36 37});
こんな風に同様のコードが長く続いてしまうのですが、
スマートに1つにまとめる事は可能でしょうか?
Javascript
1 2// 理想: IDを処理内でも使いたい 3var fileInput = document.getElementById(xxxxxxxxxxx); 4fileInput.addEventListener('change', function(e){ 5 var file = e.target.files[0]; 6 if (file.size > filesizeLimit) { 7 alert("ファイルサイズ上限は5MBです。"); 8 fileInput.value = ""; 9 return; 10 }else{ 11 var file = e.target.files[0]; 12 var blobUrl = window.URL.createObjectURL(file); 13 $('#'+xxxxxxxxxxx+'-preview').attr('src', blobUrl); 14 } 15}, false); 16
ID名の配列を作ってfor文で回してもaddEventListenerが反応しませんでした。
基本的にすべてのフォームで同様の処理(ファイルサイズチェック、#ID-previewのsrc変更処理、その他諸々)でOKです。
対策をご教示いただければ嬉しいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/11 03:55
2020/11/11 04:00
2020/11/11 04:03
2020/11/11 04:08
2020/11/11 04:14
2020/11/11 04:16