当用户从输入字段中选择时,我正在使用jQuery块来填充带有图像的div,这样他们就可以在上传之前看到他们正在上传的内容。它还将HTML添加到另一个具有图像宽度和高度的div中
唯一的问题是它第一次选择图像时不起作用;你必须再次点击浏览,再次选择图像,然后显示。
有什么想法正在发生什么?
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] => 200
[8] => 200
)
第一次选择图像时,宽度和高度设置为零。
答案 0 :(得分:1)
我怀疑你想要的更像是这样:
<div class="row" id="bodyDiv" data-controller="orglist">
<div class="col-md-12">...</div>
<div class="col-md-12">
<div class="row">
<div class="col-md-8">...</div>
<div class="col-md-4">...</div>
</div>
<div class="row">
<div class="col-md-8">...</div>
<div class="col-md-4">...</div>
</div>
<div class="row">
<div class="col-md-8">...</div>
<div class="col-md-4">...</div>
</div>
</div>
</div>
答案 1 :(得分:0)
添加此功能
$('input#photo').on('change', function() {
var files = !!this.files ? this.files : [];
if (!files.length || !window.FileReader) return; // no file selected, or no FileReader support
if (/^image/.test(files[0].type)) { // only image file
var image = new Image();
var reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onloadend = function(e) {
image.src = e.target.result;
$('div#image-preview').css('background-image', 'url(' + this.result + ')');
image.onload = function() {
$('div#image-preview').css('width', image.width);
$('div#image-preview').css('height', image.height);
$('div#image-preview').css('display', 'inline-block');
$('div#file-width-height').empty();
$('div#file-width-height').append('width: ' + image.width + ' height: ' + image.height);}
}
}
return false;
});
答案 2 :(得分:0)
将代码添加到image.onload函数并更改&#34; this.result&#34; to&#34; e.target.result&#34;解决了这个问题。
image.onload = function() {
$('div#image-preview').css('width', image.width);
$('div#image-preview').css('height', image.height);
$('div#image-preview').css('background-image', 'url(' + e.target.result + ')');
$('div#image-preview').css('display', 'inline-block');
$('div#file-width-height').empty();
$('div#file-width-height').append('width: ' + image.width + ' height: ' + image.height);
}