表单文件输入未在 IE11 中正确重置

Form file input not properly resetting in IE11

考虑以下示例:

<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 测试)如果你 select 一个包含输入的文件并且 运行 tell_me 它会给你名称selected 的文件路径。如果您事先 运行 reset 它将重置表单,然后 tell_me.

的值为空

在 IE11 中不是这样,尽管 运行ning reset 会清除屏幕上的输入,tell_me 仍会显示文件路径。

这是一个问题,因为当提交该表单时,在 IE11 中文件仍然是附件。

我知道我可以销毁并重新创建 DOM 元素来解决此问题,但还有其他人知道根本原因是什么以及解决方案吗?

顺便说一句,对于常规文本输入,这在 IE11 中不是问题。 运行 重置然后抓取它们的值给出预期的空白值。

没有jQuery请!

为 IE11 包装一个脚本,如果这只是浏览器造成的问题, 然后在重置时清除 input file

的值
document.getElementById("fileinputid").value="" 

然后手动为 thr 表单执行重置,正如您正在做的那样

document.getElementById("myForm").reset();