Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使IE8/9提交输入类型=";文件";当javascript触发对话框打开时_Javascript_Internet Explorer_Dom - Fatal编程技术网

如何使IE8/9提交输入类型=";文件";当javascript触发对话框打开时

如何使IE8/9提交输入类型=";文件";当javascript触发对话框打开时,javascript,internet-explorer,dom,Javascript,Internet Explorer,Dom,如果我在某个地方有一个input type=“file”,单击某个链接也会触发对文件输入的单击。用户选择一个文件 在IE8/9中,如果用户单击按钮type=“submit”第一次单击会清除文件输入中的所有数据,然后第二次单击会提交空白表单 如何允许提交javascript点击触发器后的input type=“file”post 一些注意事项: 另一次单击事件触发了单击。在活动范围内 输入type=“file”未设置为显示:无 未尝试操作用户输入 想法?我一直在努力解决同样的问题,但我还没有找

如果我在某个地方有一个
input type=“file”
,单击某个链接也会触发对文件输入的单击。用户选择一个文件

在IE8/9中,如果用户单击
按钮type=“submit”
第一次单击会清除文件输入中的所有数据,然后第二次单击会提交空白表单

如何允许提交javascript点击触发器后的
input type=“file”
post

一些注意事项:

  • 另一次单击事件触发了单击。在活动范围内
  • 输入type=“file”未设置为显示:无
  • 未尝试操作用户输入

想法?

我一直在努力解决同样的问题,但我还没有找到一个干净的解决方案

然而,我发现了一个解决方法。请注意,下面的解决方案完全忽略了最佳实践(以我的拙见),如果有人有更好、更符合标准的方法,请在这里发布

修复按钮点击事件

经过大量的研究,似乎很多人都在使用一种技巧,将
直接放置在按钮上,并将不透明度设置为零。这意味着,对于用户来说,他们似乎在点击按钮,但浏览器将其视为点击
(从而避免了IE中提到的问题)。我很惊讶地看到,他们实际上推荐了这种方法

修复按钮样式

现在,这确实带来了更多的美容问题;您可能会发现,您的按钮不再触发它们的
:hover
:active
CSS伪类(除非您将
放置在按钮内),并且您的鼠标光标可能是默认的鼠标光标,尽管您已将CSS应用于
或您的按钮

这些类很容易通过JavaScript解决(我将留给您),但游标仍然是一个问题。奇怪的是,您可以设置
右侧
路径的
光标的样式,但这不会影响它的
浏览
按钮。不幸的是,这个(现在是透明的)按钮可能位于样式化按钮的某个部分上,导致默认光标悬停

为了解决这个问题,我偶然发现了(JSFiddle)。基本上,有人已将事件绑定到按钮的
mousemove
事件,并在每次将鼠标悬停在按钮上时将
的右侧置于鼠标光标下。如果按钮没有固定的大小和
溢出:隐藏
设置,可能还需要对其进行一些增强,以防止从按钮坐标之外点击

结论

总的来说,我发现样式化
是不值得的;有太多的黑客,如果你真的想让它看起来不错,你可能在某个时候不得不使用JavaScript(如果你试图支持禁用JavaScript的人,那就不太好了)。我也不知道这对手机有什么影响


如果您的目标是支持的较新浏览器,那么实现一个AJAX拖放上传解决方案(这是一个不错的解决方案),并彻底摆脱
。对于那些不支持它的浏览器(较旧的浏览器和禁用JavaScript的浏览器),只需将未设置样式的
留作备用。

我发现使用更好。它处理复杂的事情要比我手动处理好得多。它基本上与jquery对x-browser dom操作和ajax所做的一样,但对input type=“file”。

@thanhtrong有什么帮助?这不可能。@Esailija这只是个问题。使用本机javascript,很难提供跨浏览器兼容性。它可能需要安装在IE上,但不会安装在FF或Chrome上。所以我问您是否需要jQuery/Mootools/Prototype解决方案。。。在jQuery中有
.click()
方法。谢谢,我会尝试一下。我不明白这些说明是如何解决上传问题的。所有这些都是关于如何实现一个漂亮的CSS上传程序的更多评论,而不是如何在IE中处理一个成功的上传,避免清除输入类型文件字段。