input中的file属性

清空input file的值

今天在做选择本地图片上传的功能时遇到一个问题,第一次选择图片完成会触发onchange事件,获取文件后动态在界面上创建img标签展示,这个过程没有问题,问题出在当把创建的img元素节点删除后,再点file控件选中同一个文件后发现图片并没有被重新创建出来。
分析了原因,是因为上一次file里选择的文件路径值与本次选择的文件路径值是一样的,值没有改变所以导致file不会触发onchange事件。
解决这个问题的思路是每次创建完img后把file的路径值清空,但浏览器的安全机制规定不可以直接用js修改file的vaule,最后找到的方法是把file的html重新初始化来解决清空的问题。

js
1
2
3
4
var file = doucment.getElementById('file');
file.value = ''; //虽然file的value不能设为有字符的值,但是可以设置为空值
//或者
file.outerHTML = file.outerHTML; //重新初始化了file的html