<input type="file">取消选择时如何保留上次选择的文件

第一次选择文件后,再次点击按钮,弹框后不选择文件而是选择取消,第一次选择的文件也没了。。。显示未选择任何文件

阅读 11.5k
4 个回答

你如果有特殊需要可以用个临时变量来保存上一次操作的值,就比如说,文件选择事件触发后

var prevFile = null;

fileElement.onchange = function(){
    var file = fileElement.files[0] || prevFile;
    if(!file) return false;
    
    ///此处省略一大段逻辑///
    prevFile = file;
};
新手上路,请多包涵

楼主后来怎么解决的??

可以通过点击事件,把当前input元素进行克隆,当我们进去没有选择文件的时候,把当前input元素用remove删除,在把之前克隆的input元素添加进来。这样就可以保存之前的文件了,我写的一些关键代码如下:
<div>

<label id="lblFile1" for="file1">点击添加</label>
<input type="file" id="file1">

</div>
<script src="${pageContext.request.contextPath}/statics/js/jquery-1.8.3.js"></script>
<script>

$(function () {
    $("#file1").click(function () {
        var fileClone = $("#file1").clone(true);
        var index=0;
        $("#file1").change(function () {
            if(index==0){
                index=1;
                var fileSize=$("#file1").val().length;
                if (fileSize==0){
                    $("#file1").remove();
                    $("#lblFile1").after(fileClone);
                }
            }
        });
    })
})

</script>
(注意:通过index做标记,让change只执行一次,因为克隆的元素id是一样的,所以会产生多次change事件)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题