场景描述
最近在写一个项目时,用到了文件上传,上传文件时用的是ajax上传,一般会用到onchange事件,但是它是在文件内容改变的情况下触发,如果我选了一个文件,结果下一次还选同一个文件,那就触发不了这个事件了,因此我们要清空一下input type=file的内容。
解决方案
HTML代码
<input type="file" class="myfile">
JS代码
function upload(){
$('.myfile').change(function(){
其他代码
.
.
.
$('.myfile').replaceWith('<input type="file" class="myfile"');//新的input替代旧的
upload();//至关重要
);
}
说明
其实有很多清空的方法,这只是其中的一种,还有什么克隆再将其value值清空也可以,我想说的是,我在网上找方法时,看到好多,他们都说可以,其实是真的可以,只是我自己犯了个错误,那就是上面代码被注释的至关重要那一句。因为你加了新的input,但是你并没为它去绑定change事件,这样的话,你确实是把input值清空了,但是你再点击选取文件,change事件并未触发。所以一定要注意哦!