Почему при добавлении картинки через input и выводе ее на экран, она выводится 2 раза
Есть форма добавления картинки:
<div class="pic-container"> <div class="close-popup"></div> <div id="dnd"> <form action="<?= admin_url('admin-post.php'); ?>" method="post" enctype="multipart/form-data"> <?php wp_nonce_field('regauthor_upload_file'); ?> <input type="hidden" name="action" value="registration_author" /> <input type="hidden" name="redirect" value="<?= get_permalink(); ?>" /> <input type="hidden" name="formNum" value="2" /> <input id="fileElem" type="file" name="regauthor_upload_file" required /> <label class="button" for="fileElem">Кликните или перетащите изображение</label> </form> </div> При добавлении картинки она с помощью js выводится на тут же в блоке div class="pic-container". Но при перетаскивании она нормально один раз выводится, а при добавлении через клик - 2 раза. Вот js код: dnd.addEventListener('drop', event => { event.preventDefault(); dnd.dataset.over = false; const text = event.dataTransfer.getData("text"); if (text) { let img = document.createElement('img'); img.src = text; picCont.appendChild(img); } else { var files = event.dataTransfer.files; [].map.call(files, file => { if (file.type.match(/^image/)) { let reader = new FileReader(); reader.onload = file => { let img = document.createElement('img'); img.src = file.target.result; picCont.appendChild(img); dnd.style.display = 'none'; closePopup.style.display = 'block'; } reader.readAsDataURL(file); inputImg.files = files; console.log(file); } }) } }); dnd.addEventListener('click', () => { inputImg.click(); inputImg.addEventListener('change', event => { let curFiles = inputImg.files; console.log(curFiles.length); let reader = new FileReader(); [].map.call(curFiles, file => { if (file.type.match(/^image/)) { let reader = new FileReader(); reader.onload = file => { let img = document.createElement('img'); img.src = file.target.result; picCont.appendChild(img); dnd.style.display = 'none'; closePopup.style.display = 'block'; } reader.readAsDataURL(file); console.log(file); } }) }); }); |
inputImg - это элемент <input id="fileElem" ... ?
Когда вы делаете inputImg.click(), событие всплывает и снова срабатывает событие click на dnd Цитата:
Используйте inputImg.focus() вместо inputImg.click() |
Часовой пояс GMT +3, время: 12:25. |