网站首页 > 博客文章 正文
问题:最近发现一个奇怪的bug,
那就是在上传图片需要采用input type=file来进行文件选择.由于为了适应美工的UI图,所以是把选择文件的input框隐藏了.然后通过另外一个按钮的点击事件来触发input的选择事件.代码如下:
//js部分,点击占位图进行文件选择
$('#uploadImg').on('click',function{
$('#chooseFile').trigger('click');
$('#chooseFile').on('change',function{
//这里要实现图片预览,一种方法是先发送给后台,再由后台将图片的url返回.另一种方法是使用插件.具体代码就不展示了
//假设我们使用向后台发送的方法,这里假定responseImgUrl是后台返回的图片url
$('#uploadImg').attr('src',responseImgUrl)//实现预览
})
})
如上代码所述,在chrome浏览器第一次进行图片选择是毫无问题的,可以成功预览,但是第二次选择文件的时候,change事件就仿佛失效了,需要多点击几次才能成功选择图片,一旦我有多张图需要上传的话,会出现点击很多次才能选择到一次
图片文件的问题,
也就是说,需要点击多次uploadImg这个元素才能触发一次chooseFile这个元素的change事件.真是太蛋疼了.网上看到有的网友说可能是由于浏览器对display=none的文件选择框进行特殊处理.于是我又把chooseFile的display=none给注释掉了,结果没有什么变化.在多次尝试之后,成功找到解决方法,
那就是不用trigger方法去触发chooseFile的文件的点击事件,直接点击chooseFile进行文件选择即可.当然,不同浏览器对input type=file这类选择框的解析不同,造成外观的差异,为了避免,我们可以做统一处理:
解决方法:
改成上述代码后,每次点击占位图,实际上点击的是chooseFile这个元素,从而直接进行文件选择.页无需用任何trigger事件.
猜你喜欢
- 2025-03-12 软网推荐:在线制作手机铃声
- 2025-03-12 Axure 8.0教程|实现环形动态进度条
- 2025-03-12 10《Vue 入门教程》Vue 双向绑定指令
- 2025-03-12 vue3.x自定义组件实现v-model
- 2025-03-12 MinIO分布式存储(从0到Vue+SpringBoot整合开发)
- 2025-03-12 [Codesys]Codesys封装的变更轴回零模式功能块-Fb_ChangeHomePara
- 2025-03-12 初学Vue(一) -- Vue简单入门
- 2025-03-12 Vue 的这5个技巧,可以大大提高我们的构建体验
- 2025-03-12 Nodejs文件上传、监听上传进度
- 2025-03-12 初学vue3, 全是黑盒子,vue3知识点汇总
你 发表评论:
欢迎- 375℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 369℃用AI Agent治理微服务的复杂性问题|QCon
- 363℃初次使用IntelliJ IDEA新建Maven项目
- 355℃Maven技术方案最全手册(mavena)
- 352℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 350℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 349℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)