javascript - 如何在 jQuery 中上传图像后在输入字段中显示图像文件名

标签 javascript html jquery

在这里,我可以上传文件并在 info 类中显示上传的文件名。但是,我试图在下面的输入字段 image_main_file_name 中显示上传的图像文件名,但我失败了。帮我解决同样的问题。 我可以在信息 div 类中显示上传的图像文件名,如下所示,

$(input).closest('dd').find('.info').html(fileName);
帮助我在下面的输入字段 image_main_file_name 中显示上传的图像文件名,

function setImage(input) {
  let $imgBox = $(input).closest('dd').find('.img_box');
  var reader = new FileReader();
  reader.onload = function(e) {
    $imgBox.html($('<img>').attr('src', e.target.result));
    let fileName = input.files[0].name;
    $(input).closest('dd').find(".folder_box img").attr('src', e.target.result)
    $(input).closest('dd').find(".folder_box img").attr('data-file', fileName)
    $(input).closest('dd').find('.info').html(fileName);
    $("#image_main_file_name").val(fileName);
  };
  reader.readAsDataURL(input.files[0]);
}
<label class="folder_box inb">
    <input type="file" name="background_image_local" class="image_upload"> <img src="" class="hidden">
    <p class="folder_img"></p>
</label>
<div class="info">
  <input type="text" name="image_main_file_name" id="image_main_file_name" value="display_img_file_name_here">
</div>
<label class="folder_box inb">
    <input type="file" name="background_image_local" class="image_upload"> <img src="" class="hidden">
    <p class="folder_img"></p>
</label>
<div class="info">
  <input type="text" name="image_main_file_name" id="image_main_file_name" value="display_img_file_name_here">
</div>

最佳答案

您的代码没问题。您只是没有将 change 监听器附加到调用 setImage 的文件输入。

function setImage(input) {
    let $imgBox = $(input).closest('dd').find('.img_box');
    var reader = new FileReader();
    reader.onload = function (e) {
        $imgBox.html( $('<img>').attr('src', e.target.result) );
        let fileName = input.files[0].name;
        $(input).closest('dd').find(".folder_box img").attr('src',e.target.result)
        $(input).closest('dd').find(".folder_box img").attr('data-file',fileName)
        $(input).closest('dd').find('.info').html(fileName);
        $("#image_main_file_name").val(fileName);
    };
    reader.readAsDataURL(input.files[0]);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="folder_box inb">
    <input type="file" name="background_image_local" class="image_upload" onchange="setImage(this)"> <img src="" class="hidden">
    <p class="folder_img"></p>
</label>
<div class="info">
    <input type="text" name="image_main_file_name" id="image_main_file_name" value="display_img_file_name_here"> 
</div>

对于多个:

function setImage(input) {
  let $imgBox = $(input).closest('dd').find('.img_box');
  var reader = new FileReader();
  reader.onload = function(e) {
    $imgBox.html($('<img>').attr('src', e.target.result));
    let fileName = input.files[0].name;
    $(input).closest('dd').find(".folder_box img").attr('src', e.target.result)
    $(input).closest('dd').find(".folder_box img").attr('data-file', fileName)
    $(input).closest('dd').find('.info').html(fileName);
    $(input).parent().next().find('#image_main_file_name').first().val(fileName);
  };
  reader.readAsDataURL(input.files[0]);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="folder_box inb">
    <input type="file" name="background_image_local" class="image_upload" onchange="setImage(this)"> <img src="" class="hidden">
    <p class="folder_img"></p>
</label>
<div class="info">
  <input type="text" name="image_main_file_name" id="image_main_file_name" value="display_img_file_name_here">
</div>
<label class="folder_box inb">
    <input type="file" name="background_image_local" class="image_upload" onchange="setImage(this)"> <img src="" class="hidden">
    <p class="folder_img"></p>
</label>
<div class="info">
  <input type="text" name="image_main_file_name" id="image_main_file_name" value="display_img_file_name_here">
</div>

关于javascript - 如何在 jQuery 中上传图像后在输入字段中显示图像文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68109216/

相关文章:

Javascript 滚动条 - 向下滚动但不向上滚动 clientY

c# - 在 WPF 应用程序中将数据从 C# 发送到 Javascript

javascript - 如果生成大型数据集,Highchart 标记图像会隐藏

javascript - 如何设置 Kendo 文本框的值并将该值传递给 Controller ​​以使模型有效?

javascript - 单击 td 内的 img 时更改 tr 背景颜色

jquery - Leaflet.js 不显示带有可折叠侧边菜单的全屏 map (简单侧边栏)

jQuery ajax : how to prevent 404 errors spam in chrome DevTools?

javascript - 点击下拉菜单多选

javascript - 如何使用 HTML5 与 UDP 套接字通信?

带圆角的 jquery 对话框