当我输入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>
答案 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',);
});
});