我想告诉我的后端,我删除了它已经加载的分配文件:
<input id="pic" name="pic" type="file" onclick="this.value=null;" onchange="uploadFile(this);">
<button id="pic-delete" type="button" onclick="removeFile(this);"><i someicon></i></button>
onclick函数如下所示:
removeFile = function() {
var ipt = document.getElementById("pic");
ipt.value = null; // <--- problem here
console.log("worked...")
}
我现在的问题是:无论我什么都不做还是点击删除按钮,我都可以在浏览器的"网络"选项卡中区分请求。两次都没有显示输入字段。我想添加ipt.value="DELETE"
,这样我就可以在后端捕获它,但这导致了一个错误:
Uncaught DOMException: An attempt was made to use an object that is not, or is no longer, usable
根据我所知,如果我在这行中放入除ipt.value = null
或ipt.value = ""
之外的任何其他内容,则总是会发生错误。
篡改完整的代码以显示错误:https://jsfiddle.net/rvc8sbjy/3/
有一些错误。您试图提取ID的方式是错误的。一个简单得多的方法是只使用.replace
var inputFieldID = v.id.replace("-delete", "");
第二,不能将值设置为非空字符串。要重置它,只需将其设置为空:
ipt.value = "";
工作示例:
https://jsfiddle.net/5yqohjzv/