【问题标题】:Preview images to a loop html input with jquery in Asp.Net Core?在 Asp.Net Core 中使用 jquery 将图像预览到循环 html 输入?
【发布时间】:2021-12-20 00:04:04
【问题描述】:

我在 html 中有一个循环,它创建 4 个输入类型的文件,在这个循环内我有一个 img 标签来预览所选图像...

<div class="gallery_imgproduct">
    @for (int i = 0; i < 4; i++)
    {
    <div class="box_galleryimg col-lg-3 col-md-3 col-sm-6 col-xs-12">
        <div class="form-group">
            <img id="main_image_product" src="~/site/img/product/286289f713.jpg" />
            <input  type="file" asp-for="ProductImgName" onchange="readURL(this);" class="form-control">                
        </div>

    </div>
    }
</div>

下面的 jQuery 代码仅用于预览输入...

 function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function (e) {
            $('#main_image_product')
                .attr('src', e.target.result)
        };
        reader.readAsDataURL(input.files[0]);
    }
}

如果图像被选中,我希望在 img 标签中显示预览... 如果这是可能的,请帮助。如果不是,请提出解决方案。谢谢

【问题讨论】:

    标签: javascript jquery asp.net-core


    【解决方案1】:

    在 for 循环中,您的预览图像 ID 为“main_image_product”。 id 必须是唯一的。因此,您可以将该图像标签置于循环之外,或使用 $i 为所有预览图像创建唯一 ID。

    <img id="main_image_product" src="~/site/img/product/286289f713.jpg" />
    <div class="gallery_imgproduct">
      @for (int i = 0; i < 4; i++)
      {
      <div class="box_galleryimg col-lg-3 col-md-3 col-sm-6 col-xs-12">
          <div class="form-group">            
              <input  type="file" asp-for="ProductImgName" onchange="readURL(this);" class="form-control">                
          </div>
    
      </div>
      }
    </div>
    

    <div class="gallery_imgproduct">
      @for (int i = 0; i < 4; i++)
      {
      <div class="box_galleryimg col-lg-3 col-md-3 col-sm-6 col-xs-12">
          <div class="form-group">
              <img id="main_image_product$i" src="~/site/img/product/286289f713.jpg" />
              <input  type="file" asp-for="ProductImgName" onchange="readURL(this,'main_image_product$i');" class="form-control">                
          </div>
    
      </div>
      }
    </div>
    
        function readURL(input,imgId) {
      if (input.files && input.files[0]) {
          var reader = new FileReader();
          reader.onload = function (e) {
              $('#'+imgId)
                  .attr('src', e.target.result);
          };
          reader.readAsDataURL(input.files[0]);
      }
    } 
    

    【讨论】:

    • 我有四个输入,每个输入选择一张照片。我希望每个选定的照片输入都显示在其自己的 img 标签中。
    • 那么你必须使用循环变量来创建唯一的图像ID
    • 你有什么建议?
    • 编辑了答案。只有部分我不太确定 - 将循环变量 i 添加到图像 ID。我在那里用过 $i。
    • 谢谢,它成功了,我改变你的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2012-08-21
    • 1970-01-01
    • 2016-12-09
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多