Bootstrap 4:动态添加的文件上传控件显示文件名

bootstrap 4:动态添加的文件上传控件显示文件名

本文介绍了在使用 Bootstrap 4 的文件上传控件时,如何动态添加新的上传控件,并使每个控件都能正确显示所选文件的文件名。重点讲解了如何使用 jQuery 的 `on()` 方法来处理动态添加元素的事件绑定问题,以及如何正确地更新文件上传控件旁边的标签以显示文件名。

在使用 Bootstrap 4 创建文件上传功能时,我们常常会遇到需要动态添加文件上传控件的情况。 然而,动态添加的控件可能无法像初始控件那样自动显示所选文件名。 本文将介绍如何解决这个问题,确保每个动态添加的 Bootstrap 4 文件上传控件都能正确显示文件名。

问题分析

Bootstrap 4 使用 custom-file 类来美化文件上传控件,并使用相邻的 label 元素来显示文件名。 默认情况下,JavaScript 代码会监听 input[type=”file”] 的 change 事件,并在事件触发时更新 label 元素的内容。

当通过 JavaScript 动态添加 input[type=”file”] 元素时,直接使用 $(‘input[type=”file”]’).change() 绑定事件可能无法生效。 这是因为在页面加载时,动态添加的元素尚未存在,因此事件监听器无法绑定到这些元素上。

解决方案:使用 on() 方法进行事件委托

解决这个问题的方法是使用 jQuery 的 on() 方法进行事件委托。 on() 方法允许我们将事件监听器绑定到静态父元素上,并指定一个选择器,以便只有匹配该选择器的子元素触发事件时,监听器才会被执行。

以下代码展示了如何使用 on() 方法来处理动态添加的文件上传控件的 change 事件:

$(document).ready(function(){  $('#image_box').on('change', 'input[type="file"]', function(e) {    var fileName = e.target.files[0].name;    $(this).next().html(fileName);  });});

代码解释:

$(document).ready(function(){ … });:确保在文档加载完成后执行代码。$(‘#image_box’).on(‘change’, ‘input[type=”file”]’, function(e) { … });:将 change 事件监听器绑定到 id 为 image_box 的元素上。 当 image_box 元素内的任何 input[type=”file”] 元素触发 change 事件时,监听器将被执行。var fileName = e.target.files[0].name;:获取所选文件的文件名。$(this).next().html(fileName);:更新当前 input[type=”file”] 元素相邻的 label 元素的内容,以显示文件名。 $(this) 指的是触发事件的 input[type=”file”] 元素,.next() 选择器选择紧随其后的兄弟元素,也就是用于显示文件名的 label。

动态添加文件上传控件的示例代码

以下是一个完整的示例,展示了如何动态添加文件上传控件,并确保每个控件都能正确显示文件名:

  Bootstrap 4 文件上传控件示例        

动态添加文件上传控件

var total_image = 1; function add_more_images() { total_image++; var html = '
'; $('#new_image_box').append(html); } function remove_image(image_id) { $('#add_image_box' + image_id).remove(); } $(document).ready(function() { $('#image_box').on('change', 'input[type="file"]', function(e) { var fileName = e.target.files[0].name; $(this).next().html(fileName); }); $('#new_image_box').on('change', 'input[type="file"]', function(e) { var fileName = e.target.files[0].name; $(this).next().html(fileName); }); });

代码解释:

add_more_images() 函数:动态创建新的文件上传控件,并将其添加到 id 为 new_image_box 的元素中。remove_image() 函数:移除动态添加的文件上传控件。$(document).ready(function() { … });:在文档加载完成后执行代码。$(‘#image_box’).on(‘change’, ‘input[type=”file”]’, function(e) { … });:处理初始文件上传控件的 change 事件。$(‘#new_image_box’).on(‘change’, ‘input[type=”file”]’, function(e) { … });:处理动态添加的文件上传控件的 change 事件。

注意事项

确保引入了 jQuery 和 Bootstrap 4 的 CSS 和 JavaScript 文件。id 为 image_box 的元素应该是静态存在的父元素,用于绑定事件监听器。动态添加的 HTML 代码应该符合 Bootstrap 4 的规范,包括 custom-file 类和 label 元素。如果需要移除动态添加的控件,需要同时移除其对应的事件监听器。

总结

通过使用 jQuery 的 on() 方法进行事件委托,我们可以轻松地处理动态添加的 Bootstrap 4 文件上传控件的事件,并确保每个控件都能正确显示所选文件的文件名。 这种方法不仅适用于文件上传控件,还可以应用于其他需要动态添加元素的场景。

以上就是Bootstrap 4:动态添加的文件上传控件显示文件名的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1323093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月12日 09:51:43
下一篇 2025年12月12日 09:51:53

相关推荐

  • 解决异步Fetch POST请求后意外页面跳转与实现页面刷新

    在使用JavaScript进行异步Fetch POST请求时,开发者常会遇到一个令人困扰的问题:在请求完成后,浏览器不是停留在当前页面,而是意外地跳转到了后端处理请求的接口页面。这不仅破坏了用户体验,也违背了AJAX(Asynchronous JavaScript and XML)设计的初衷——在不…

    2025年12月12日
    000
  • Symfony缓存怎么管理_Symfony缓存组件管理与配置

    答案:Symfony缓存基于PSR-6/PSR-16标准,支持Redis、Memcached等适配器,通过cache.app等缓存池分离用途,在config/packages/cache.yaml中配置存储方式,代码中使用CacheInterface的get方法结合回调实现高效数据缓存,配合cach…

    2025年12月12日
    000
  • PHP实时输出有何作用_PHP实时输出应用场景解析

    PHP实时输出通过flush()和ob_flush()控制缓冲,使耗时任务如数据导入、文件处理时能即时返回进度信息,避免页面空白,提升用户体验与调试效率,适用于大文件导出、日志回显及进度追踪等场景。 PHP实时输出主要解决的是数据处理过程中用户等待时间过长、无法及时获取执行状态的问题。它通过控制输出…

    2025年12月12日
    000
  • PHP数据插入怎么操作_PHP向MySQL插入数据方法详解

    使用预处理语句可有效防止SQL注入,推荐结合事务和批量执行提升性能,PDO提供数据库抽象层便于移植。 PHP向MySQL插入数据,核心在于构建SQL语句并执行。直接点说,就是拼字符串,然后告诉MySQL“执行这个字符串”。但安全性是重中之重,必须防范SQL注入。 解决方案 最常见的操作流程如下: 建…

    2025年12月12日
    000
  • php怎么加空_php字符串添加空格的多种方法

    答案:PHP中添加空格的方法多样,根据需求选择合适方式。使用字符串连接符.可直接拼接空格;sprintf()适用于格式化输出,支持对齐和固定宽度;str_pad()用于填充至指定长度,适合文本对齐;implode()将数组元素用空格连接;str_repeat()生成重复空格,便于缩进处理。在特定位置…

    2025年12月12日 好文分享
    000
  • PHP递增操作符在Web Socket中的应用_PHP WebSocket递增计数器

    递增操作符在PHP WebSocket中用于唯一ID分配、消息序号控制和在线人数统计,结合Swoole可实现高效计数,需注意作用域与并发安全。 在使用PHP构建WebSocket服务时,递增操作符(如++)常用于实现计数器功能,比如连接ID分配、消息序号生成或在线人数统计。虽然PHP本身不是典型的实…

    2025年12月12日
    000
  • PHP抽象类abstract有什么用_PHP抽象类与抽象方法定义及继承实现

    抽象类不能被实例化,只能被继承,用于定义规范并强制子类实现抽象方法。示例中Animal是抽象类,包含抽象方法makeSound()和具体方法sleep(),子类Dog和Cat继承Animal并实现makeSound(),从而保证结构统一且可复用。若子类未实现所有抽象方法,则必须声明为抽象类,否则会触…

    2025年12月12日
    000
  • PHP视频播放器进度条控制_PHP视频播放器进度条控制

    答案:通过HTML5 Video标签与JavaScript实现前端进度条控制,PHP后端支持HTTP Range请求实现视频流分段传输,前后端协同完成播放进度拖动功能。 实现PHP视频播放器进度条控制,关键在于前端与后端的协同处理。虽然PHP本身是服务端语言,不能直接操控播放器界面行为,但可以通过配…

    2025年12月12日
    000
  • 如何在一键PHP环境上部署Vue项目_Vue项目前后端分离

    首先将Vue项目构建为静态文件并部署到PHP环境的Web目录,再配置服务器重写规则支持History路由模式,最后通过同域部署解决前后端接口跨域问题,实现分离架构下的协同运行。 在一键PHP环境上部署Vue项目,重点在于理解前后端分离架构的运行机制。前端Vue项目打包后本质是静态文件,不需要PHP环…

    2025年12月12日
    000
  • 一键PHP环境如何设置时区_PHP时区配置修改方法

    首先修改php.ini中的date.timezone设置,再重启服务。具体为:打开一键环境面板定位php.ini文件,取消date.timezone注释并设为Asia/Shanghai等时区,保存后重启Apache或Nginx,最后通过date函数测试生效情况。注意确认使用的php.ini为当前PH…

    2025年12月12日
    000
  • PHP消息队列怎么用_PHP中RabbitMQ或Kafka消息队列集成使用

    答案:PHP中使用RabbitMQ和Kafka实现消息队列,RabbitMQ通过php-amqplib库支持异步任务如邮件发送,Kafka借助rdkafka扩展适用于高吞吐日志处理;建议RabbitMQ用于业务解耦,Kafka用于数据流分析,可结合使用并保障消息可靠性。 在PHP项目中使用消息队列,…

    2025年12月12日
    000
  • PHP实时输出如何处理并发请求_PHP实时输出并发处理方案

    答案:PHP实时输出并发处理需关闭输出缓冲并刷新,结合Swoole等异步框架提升性能。通过ob_end_flush()、flush()实现即时输出,配置Nginx关闭fastcgi_buffering;使用Swoole或Workerman替代PHP-FPM以支持协程与长连接;耗时任务交由消息队列异步…

    2025年12月12日
    000
  • Lumen框架和Laravel有何不同_Lumen框架与Laravel对比分析

    Lumen是轻量级微框架,专为高性能API设计,牺牲Session、视图、队列等功能以提升速度;Laravel是全栈框架,功能完整,适合复杂Web应用。选择取决于项目需求:纯API用Lumen,全栈功能选Laravel。 Lumen和Laravel,这两个框架虽然同根同源,都出自Taylor Otw…

    2025年12月12日
    000
  • PHPCLI脚本怎么编写_PHP命令行工具开发入门

    PHP CLI是命令行接口,用于在终端运行PHP脚本,适合处理定时任务和自动化操作。通过php -v检查环境,编写脚本时可使用$argc和$argv获取参数,添加Shebang行并赋予执行权限后可直接运行。注意开启错误报告、合理输出日志、返回状态码,提升脚本实用性。 编写PHP CLI脚本其实并不复…

    2025年12月12日
    000
  • Symfony路由如何定义和使用_Symfony路由配置最佳实践

    Symfony路由通过将HTTP请求映射到控制器方法,实现URL与业务逻辑的关联。其核心机制支持注解、YAML/XML等多种定义方式,其中注解因高可读性和开发效率更适用于现代项目;YAML/XML则适合需集中管理或团队协作场景。路由命名应遵循app_模块_动作等规范,确保唯一性与语义化,提升可维护性…

    2025年12月12日
    000
  • PHP视频后台审核流程_PHP视频后台审核流程

    视频上传后PHP验证格式、大小并暂存,记录信息至数据库;2. 调用AI与规则引擎自动检测内容合规性,标记审核状态;3. 需人工审核的进入管理队列,供管理员查看并操作;4. 审核结果驱动视频发布或屏蔽,并通知用户,全流程依托PHP协同数据库与云服务实现高效安全管控。 视频后台审核流程在涉及用户上传内容…

    2025年12月12日
    000
  • 利用PHP递增实现一个简单的计数器服务_PHP计数器服务搭建实践

    答案:通过PHP文件锁实现计数器,确保并发安全。每次请求读取并递增文件中的数值,使用flock防止冲突,返回当前访问次数,并可扩展为按天/IP统计、JSON输出及防刷新机制,适用于轻量级场景。 实现一个简单的计数器服务可以通过 PHP 结合文件存储来完成。这种方式适合轻量级场景,比如记录页面访问次数…

    2025年12月12日
    000
  • PHP代码注入检测报警机制_PHP代码注入检测报警机制实现

    PHP代码注入检测报警机制需构建多层次动态防御体系,核心在于运行时监控与即时响应。首先通过钩子技术拦截eval()、shell_exec()等高危函数调用,结合WAF规则过滤和日志分析识别异常行为;其次建立分级报警机制,利用邮件、即时通讯、短信及SIEM系统实现精准通知,并通过白名单、行为关联分析降…

    2025年12月12日
    000
  • PHP队列服务怎么搭建_PHP消息队列实战指南

    首选think-queue扩展并安装依赖,配置Redis驱动,编写任务类实现fire方法,通过Queue::push()推送任务,使用php think queue:listen命令启动监听,结合nohup或supervisor保持守护进程运行,确保任务持续消费。 搭建PHP队列服务,核心是选型、安…

    2025年12月12日
    000
  • PHP会话如何管理_PHP_Session会话管理技术详解

    PHP Session是服务器端用户状态跟踪机制,通过唯一会话ID识别用户。使用前需调用session_start(),数据存于服务器,默认以文件形式存储,可配置为数据库或Redis。为保障安全,应启用HTTPS、关闭URL传递Session ID、设置cookie为HttpOnly和Secure,…

    2025年12月12日
    000

发表回复

登录后才能评论
关注微信