【问题标题】:Need to generalize jquery image preview需要泛化jquery图片预览
【发布时间】:2023-04-01 13:45:02
【问题描述】:

我允许用户在将上传的图像保存到数据库之前查看它的预览。 HTML 代码是:

<div class="upload-preview">
  <img />
</div>
<input class="file" name="logo" type="file">

我的 jquery 代码是:

$(document).ready(function(){
var preview = $(".upload-preview img");

$(".file").change(function(event){
   var input = $(event.currentTarget);
   var file = input[0].files[0];
   var reader = new FileReader();
   reader.onload = function(e){
       image_base64 = e.target.result;
       preview.attr("src", image_base64);
   };
   reader.readAsDataURL(file);
  });
});

上面的代码适用于一张图片。 如果我要上传 10 张图片,我必须重复代码 10 次。

我试图概括它,但由于 jquery 代码依赖于 html 类,因此图像被上传到所有匹配的类。

如果我使用一个 ID,那么我将不得不为每个 ID 重复 jquery 代码。

有没有办法概括这个问题,以便它可以只用一个 jquery 函数预览多个图像。

【问题讨论】:

    标签: jquery image preview


    【解决方案1】:

    通过以下方式更改您的 HTML 代码:

    <div class="upload-preview" id="upload-preview">
    
    </div>
    <input class="file" name="logo" type="file"/>
    

    和这个的JS代码:

    $(document).ready(function(){
    var preview = $("#upload-preview");
    
    $(".file").change(function(event){
       var input = $(event.currentTarget);
       var file = input[0].files[0];
       var reader = new FileReader();
       reader.onload = function(e){
           image_base64 = e.target.result;
           preview.append("<img src='"+image_base64+"'/><br/>");
       };
       reader.readAsDataURL(file);
      });
    });
    }
    

    【讨论】:

    • 在您的回答中,html 中的上传按钮在哪里?如果我删除空图像标签,图像将如何预览?我认为 是必要的
    • @Ajey 我刚刚修改了您的 div 代码,在 div 之后添加了文件上传。和 jquery 将工作。先试试这个。
    • 非常感谢您的努力。我几乎得到了我想要的东西。但最后一个问题。当我附加图像时,我希望它们水平附加它们。截至目前,它们正在垂直附加。知道如何实现吗?
    • @Ajey 使用这个preview.append("&lt;img src='"+image_base64+"'/&gt;&lt;br/&gt;"); 替换代码中的这一行。
    • @Ajey 很高兴为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-02-03
    • 2011-08-17
    • 2011-03-10
    • 2014-04-19
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    相关资源
    最近更新 更多