解决type为file的input框上传同名文件失效Bug

昨天测试人员跟我提了个bug,他说:“上传一张产品图片,删除该产品图片,再上传相同的产品图片,图片无显示”

                         

①点击上传图片

②删除图片

③再次上传这张图片

④无法显示

首先我们要理解,我们是通过input上传图片,然后通过将input的value值赋值给img元素的src属性来显示图片。假设给显示图片的<img>元素动态绑定src属性为imgSrc。

打个debugger调试发现:

①第一次上传图片会触发input的onChange事件,onChange事件将input的value赋值给imgSrc,

②第二步删除图片的操作,将imgSrc清空,图片从页面去除

③第三步再次上传相同的图片,因为第二步没有对input的value值清空,这时input框会对新传入的值进行对比,相同则触发onChange方法,不相同则不触发。因此这里没有触发onChange方法,也不会重新赋值给imgSrc

解决思路: 删除的时候将图片imgSrc去除,input的value值也一并去除

js、jQ、Vue清空input的value值

// JavaScript
<input id="uploadInput" type="file">
document.getElementById('uploadInput').value = ''

// jQuery
<input id="uploadInput" type="file">
$(" input[ type='file' ] ").val('')

// Vue
<input ref="uploadInput" type="file">
this.$refs.uploadInput.value = ''
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Demi

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值