考虑以下示例:
<html>
<head></head>
<body>
<form id="test">
<input type="file">
</form>
</body>
<script type="text/javascript">
function reset()
{
document.getElementById('test').reset();
}
function tell_me()
{
console.log( document.getElementById('test').getElementsByTagName('input')[0].value );
}
</script>
</html>
在大多数浏览器(Chrome,Firefox测试过)中,如果您选择带有输入的文件并运行tell_me
,它将为您提供已选择的文件路径的名称。如果您事先运行reset
,则会重置表单,然后为tell_me
设置一个空值。
在IE11中并非如此,虽然运行reset
将清除屏幕上的输入,但tell_me
仍会显示文件路径。
这是一个问题,因为当提交该表单时,在IE11中仍然附加了该文件。
我知道我可以销毁并重新创建DOM元素来解决这个问题,但其他人是否知道根本原因是什么?解决方案?
顺便说一句,对于常规文本输入,这在IE11中不是问题。运行重置然后抓取它们的值会得到预期的空白值。
请不要jQuery!
答案 0 :(得分:3)
为IE11包装一个脚本,
然后在重置时清除input file
document.getElementById("fileinputid").value=""
然后使用正如你所做的那样manualy执行thr表格重置
document.getElementById("myForm").reset();