js清空input file的值

js清空input file的值今天在做选择本地图片上传的功能时遇到一个问题,第一次选择图片完成会触发onchange事件,获取文件后动态在界面上创建img标签展示,这个过程没有问题,问题出在当把创建的img元素节点删除后,再点file控件选中同一个文件后发现图片并没有被重新创建出来。分析了原因,是因为上一次file里选择的文件路径值与本次选择的文件路径值是一样的,值没有改变所以导致file不会触发onchange事件。解

大家好,又见面了,我是你们的朋友全栈君。

在做选择本地图片上传的功能时遇到一个问题,第一次点file按钮选择图片完成会触发onchange事件,获取文件后动态在界面上创建img标签展示,但把创建的img元素节点删除后,再点file按钮选择同一个文件后发现图片并没有被重新创建出来。

分析了原因:因为上一次选择的文件与本次选择的是同一个文件,两次的路径值相同,值没有改变所以导致file不会触发onchange事件,因此需要每次创建完img后重置file的value或者重置file的dom来解决这个问题。

方案一

每次创建完img后把file的value值重置为空字符串(设其它值会报错)

提示:浏览器的安全机制不允许直接用js修改file的value为空字符串以外的值,强制修改会报以下错误:
VM4061:1 Uncaught DOMException: Failed to set the ‘value’ property on ‘HTMLInputElement’: This input element accepts a filename, which may only be programmatically set to the empty string.

var file = document.getElementById('file');
file.value = ''; //file的value值只能设置为空字符串

方案二

每次创建完img后把file的outerHTML重置

var file = document.getElementById('file');
file.outerHTML = file.outerHTML; //重置了file的outerHTML
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131702.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vuecli安装_vuecli3项目打包并运行

    vuecli安装_vuecli3项目打包并运行前言vue-cli是和vue进行深度组合的工具,可以快速帮我们创建vue项目,并且把一些脚手架相关的代码给我们创建好。真正使用vue开发项目,都是用vue-cli来创建项目的。vue-cli介绍

    2022年7月31日
    6
  • mysql c preparestatement「建议收藏」

    mysql c preparestatement「建议收藏」今天折腾了一个mysql的c的insert语句,与java访问oracle类似,mysql也支持这种preparestatement,使用这种语句的好处有很多,在oracle之中,这种方式在后台是sql是进行软解析,而直接拼凑insert的sql语句,则是叫硬解析,即每一个数据库都要重新分析一个sql的语法,对于大量的数据插入的情况,最好使用preparestatement,第2个好处是,如果直接

    2022年5月16日
    32
  • 日语输入法手机版下载_simeji日语输入法安卓

    日语输入法手机版下载_simeji日语输入法安卓WINXP的日语输入法不正常的解决方法及相关文件下载问题:如果你的WINXP的日语输入法不正常:安装好微软自带的输入法后,只能输入英文无法输入日文,也是只见光标在闪怎么按罗马音敲键盘就是没反映,问题分析:这时请检查你自己的X:/WINDOWS/ime有多大,正常应该大于80兆(X是指XP的安装分区,一般是C盘),如果你的只有几兆,那么说明你用的XP系统安装盘是简化的克隆安装盘,日语输入法相

    2022年10月21日
    2
  • SpringBoot集成Redis,并自定义对象序列化

    SpringBoot集成Redis,并自定义对象序列化SpringBoot项目使用redis非常简单,pom里面引入redis的场景启动器,在启动类上加@EnableCaching注解,项目启动会自动匹配上redis,这样项目中就可以愉快地使用了,使用方法:要么使用@Cacheable一类的注解自动缓存,要么使用RedisTemplate手动缓存。(前提是你的本机或者是远程主机要先搭好redis环境)虽然SpringBoot好用,但这里也有好多…

    2022年9月22日
    3
  • Spring源码下载及安装

    Spring源码下载及安装今天下午开始学习Spring源码深度解析,第一章是进行环境搭建。。。。。照着书整,但是遇到很多问题,然后就各种百度,终于搭建成功了,这里写下博客进行记录总结下:一.安装GitHub1、到官网下载客户端:https://github-windows.s3.amazonaws.com/GitHubSetup.exe,安装完成后,会在桌面上出现两个图标,GitShell和GitHub。那两个图标分别是…

    2022年8月12日
    7
  • 推导Lasso回归「建议收藏」

    推导Lasso回归「建议收藏」推导Lasso回归文章目录推导Lasso回归一、推导过程二、用python编写求解函数三、Lasso求解稀疏表示做人脸识别代码展示:运行结果四、调整不同的超参lambda,对seta的影响代码展示一、推导过程​ Lasso方法是在普通线性模型中增加L1L_1L1​惩罚项,有助于降低过拟合风险,更容易获得稀疏解,求得的θ\thetaθ会有更少的非零分量。与岭回归的不同在于,此约束条件使用了绝对值的一阶惩罚函数代替了平方和的二阶函数。Lasso回归原式: arg⁡min⁡θ∣∣Aθ−

    2022年5月29日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号