表单文件输入未在 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();
考虑以下示例:
<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();