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

时间:2015-01-20 11:27:33

标签: javascript internet-explorer-11 html-form

考虑以下示例:

<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!

1 个答案:

答案 0 :(得分:3)

如果只是浏览器创建问题,

为IE11包装一个脚本, 然后在重置时清除input file

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

然后使用正如你所做的那样manualy执行thr表格重置

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