简易:
<form>将元素包裹起来,在表单上调用reset,然后使用删除表单
.unwrap()。与
.clone()该线程中不同的解决方案不同,你最终得到的是同一元素(包括在其上设置的自定义属性)。
经过测试并可以在Opera,Firefox,Safari,Chrome和IE6 +中运行。也适用于其他类型的表单元素,但除外
type="hidden"。
window.reset = function(e) { e.wrap('<form>').closest('form').get(0).reset(); e.unwrap();}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><form> <input id="file" type="file"> <br> <input id="text" type="text" value="Original"></form><button onclick="reset($('#file'))">Reset file</button><button onclick="reset($('#text'))">Reset text</button>JSFiddle
如下面的Timo所述,如果你有按钮来触发重置内部的字段,则
<form>必须调用
.preventDefault()该事件以防止
<button>触发提交。
编辑
由于未修复的错误,因此无法在IE 11中运行。文本(文件名)在输入中被清除,但其
File列表仍被填充。



