我的预览显示旧输入和新输入我如何仅显示新输入

时间:2019-02-19 14:17:52

标签: javascript jquery html laravel laravel-5

当我输入2张要上传的图像而不上传时,它显示得很好。当我选择其他文件时,问题就来了。它们被添加到预览中而不是被删除。基本上现在只有新的2张图片会被上传,但在预览中他看到4张图片。当他输入新图像时,如何删除旧图像。

我认为If语句对案件有帮助,但我不确定如何写。

这是我的JS预览:

$(function() {
    // Multiple images preview in browser
    var imagesPreview = function(input, placeToInsertImagePreview) {

        if ('.previewdeleter' ===('image') ){
            var deletepreview = ('previewdeleter')
        }

        if (input.files) {
            var filesAmount = input.files.length;

            for (i = 0; i < filesAmount; i++) {
                var reader = new FileReader();

                reader.onload = function(event) {
                    $('<div class="previewdeleter position-relative" data-item-id-div="input.files[i].length" style="height:200px;width: 200px; display: inline-block; position: relative !important;">' +
                        '<img alt="" src=' + event.target.result + ' style="height:200px;width: 100%; display: inline-block;">')
                        .appendTo(placeToInsertImagePreview);
                }
                reader.readAsDataURL(input.files[i],);
            }

        }


    };

    $('#images').on('change', function() {
        imagesPreview(this, '#previewHolder',);
    });

});

这是我的HTML:

               <input value="" type="file" id="images" name="images[]" accept="image/*" multiple />
                <div id="previewHolder" data-item-id-div="input.files[i].length" multiple="" class="previewdeleter position-relative">
                </div>

1 个答案:

答案 0 :(得分:0)

这是因为您使用的是.appendTo-图像预览将添加到图像预览元素中。这意味着每次您选择图片时,预览都会显示额外的图片。

为防止这种情况,您应在添加新预览之前清空预览框,这可以通过以下方式实现:

$('#previewHolder').empty();

使用原始代码,它将像这样工作:

$(function() {
    // Multiple images preview in browser
    var imagesPreview = function(input, placeToInsertImagePreview) {
        $('#previewHolder').empty(); // Empty previewholder

        if ('.previewdeleter' ===('image') ){
            var deletepreview = ('previewdeleter')
        }

        if (input.files) {
            var filesAmount = input.files.length;

            for (i = 0; i < filesAmount; i++) {
                var reader = new FileReader();

                reader.onload = function(event) {
                    $('<div class="previewdeleter position-relative" data-item-id-div="input.files[i].length" style="height:200px;width: 200px; display: inline-block; position: relative !important;">' +
                        '<img alt="" src=' + event.target.result + ' style="height:200px;width: 100%; display: inline-block;">')
                        .appendTo(placeToInsertImagePreview);
                }
                reader.readAsDataURL(input.files[i],);
            }

        }


    };

    $('#images').on('change', function() {
        imagesPreview(this, '#previewHolder',);
});

});