Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как удалить динамический элемент? (https://javascript.ru/forum/misc/81624-kak-udalit-dinamicheskijj-ehlement.html)

LingVist 27.12.2020 08:22

Как удалить динамический элемент?
 
Есть форма для динамического добавления картинок

<form action="uploads" method="post" enctype="multipart/form-data">
<div id="uploads_files">
    <input type="file" name="images[]" multiple accept="image/*"/>
    <button type="submit">Сохранить</button>
</div>


JS-скрипт добавления картинок

(function(){
if(!window.File || !window.FileList || !window.FileReader)
    return console.log("Your browser does not support File API");
document.getElementById("uploads_files").addEventListener("change", function(event) {
    var clone = event.target.cloneNode(),
        files = event.target.files,
        output = document.getElementById("result");
    clone.value=null;
    this.appendChild(clone);
    this.focus();
    for(var i = 0; i < files.length; i++) {
        var file = files[i];
        if(!file.type.match('image'))
            continue;
        var picReader = new FileReader();
        picReader.addEventListener("load", function(event) {
            var picFile = event.target;
            var div = document.createElement("div");
            div.className = 'preview';
            div.innerHTML = "<button type='button' href='' class='del_img'>Удалить</button><img class='thumbnail' src='"
                + picFile.result + "'" + "title='" + picFile.name + "'/>";
            output.insertBefore(div, null);
        });
        picReader.readAsDataURL(file);
    }    
});
})();


Задача в том, чтобы сделать возможность удалять картинки пользователю. В JS я не силен, а знаний JQuery хватило на то, чтобы выдать такой скрипт

$(document).on('click', '.del_img', function() {
    $(this).parents("div:first").remove();
});


Добавление и удаление происходят нормально. Но, только в браузере. Например, выбрал юзер 6 картинок. Потом посмотрел и 2 удалил. Визуально они удалились, но в контроллер передаются все равно 6 штук. Посоветуйте, как правильно сделать удаление.

Спасибо

voraa 27.12.2020 09:06

На сервер все равно будут передаваться те картинки, которые находятся в
в <input type=file>.files
И оттуда их не удалить.
Надо вручную снова формировать список картинок, которые должны передаться, помещая их в FormData. И передавать в запросе не значения полей, а FormData.

LingVist 28.12.2020 08:35

Даа, не думал, что все так сложно. Ну ладно, пойдем другим путем:)
Спасибо!


Часовой пояс GMT +3, время: 21:46.