-
问题:使用input[type=file]上传文件,文件被使用一次或者清除一次后,无法再次上传文件
-
原因:每一次文件被使用后,原来的input会被替换成一个新的input标签,并且是浅克隆,所以新input标签上没有原来绑定的onchange事件
-
解决方案:每一次调用成功之后,替换input file,然后重新绑定change事件
-
代码:
// 清空上传的文件
$("#clearFileUpload").click(() => {
$("#uploadFileInput").val('');
// 替换标签
$("#uploadFile").replaceWith('<input type="file" accept=".zip, .rar" class="upload_file" id="uploadFile" />');
// 重新绑定change事件
$("#uploadFile").on("change", () => {
let file = $("#uploadFile")[0].files[0];
$("#updateFileInput").val(file.name);
})
});