如何使IE8/9提交输入类型="文件"当javascript触发对话框打开
How to make IE8/9 submit input type="file" when javascript triggered dialog open
如果我在某个地方有一个input type="file"
,点击某个链接也会触发点击文件输入。用户选择一个文件
在IE8/9中,如果用户单击button type="submit"
,则第一次单击清除文件输入中的所有数据,然后第二次提交空白表单。
如何允许提交的input type="file"
post一个javascript点击触发。
一些注意事项:
- 由于另一个点击事件触发了点击。
- 输入类型="file"未设置为显示:none
- 未尝试操作用户输入
想法?
我一直在为同样的问题而挣扎,但我还没有找到一个干净的解决方案。
然而,我发现了一个解决方法。请注意,下面的解决方案完全无视最佳实践(以我个人的拙见),如果有人有更好、更符合标准的方法,请在这里发布。修复按钮点击事件
经过大量的研究,似乎很多人都在使用一种技巧,即他们绝对位置的<input type="file" />
立即在他们的按钮,并设置不透明度为零。这意味着,对用户来说,看起来他们是在点击一个按钮,但浏览器认为它是在点击<input type="file" />
(从而避免了IE中提到的问题)。我很惊讶地发现Quirksmode实际上推荐了这种方法。
修复按钮样式
现在,这确实引入了进一步的外观问题;你可能会发现你的按钮不再触发它们的:hover
和:active
CSS伪类(除非你把<input type="file" />
放在按钮内),并且你的鼠标光标可能会是默认的鼠标光标,尽管你已经应用了任何CSS到你的<input type="file" />
或你的按钮。
这些类很容易通过JavaScript解决(我将把这个问题留给您)来修复,但是光标仍然是一个问题。奇怪的是,你可以将cursor
样式设置在<input type="file" '>
右侧的path
,但这不会影响它的Browse
按钮。不幸的是,这个(现在是透明的)按钮可能会在您的样式按钮的某些部分,导致默认光标悬停。
mousemove
事件,并且每次将鼠标悬停在按钮上时,都将<input type="file" />
的右侧定位在鼠标光标下方。如果按钮没有固定的大小和overflow: hidden
设置,为了阻止<input type="file" />
从按钮的坐标外部被点击,这可能还需要增强一点。
结论总的来说,我发现样式化<input type="file" />
是不值得的;有太多的技巧,如果你真的想让它看起来很好,你可能不得不在某些时候使用JavaScript(如果你试图支持那些禁用JavaScript的人,那就不太好了)。我也不知道这对手机有什么影响。
如果你的目标是支持Html5文件API的新浏览器,实现AJAX拖放上传解决方案(这里是一个不错的解决方案),并完全摆脱<input type="file" />
。对于那些不支持它的浏览器(旧浏览器和禁用JavaScript的浏览器),只需将未样式的<input type="file" />
留在那里作为备用。
我发现使用jquery的fileupload扩展只是更好。它处理复杂的东西要比我手工做的好得多。它基本上做了jquery在x-browser中的dom操作&
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- Javascript复选框函数:;缺少:在属性id之后"
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 插入“;img src"在javascript中
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- 如何's css标记"-webkit最小设备像素比”;在Javascript中实现
- 内联javascript与"<脚本>"字符串错误地关闭了脚本标记
- 什么是"!函数(){}〃;javascript中的mean/do
- 使用javascript"这个“;用于jquery选择器
- 我可以在不使用乘法运算符“”的情况下进行乘法运算吗*"在JavaScript中
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- 什么是==+"在javascript中
- 什么是“;回归"javascript中的mean
- 可以't删除“;C: fakepath "使用javascript替换和regex
- 如何删除“"使用javascript从字符串中提取字符
- 如何使用Javascript获取当前页面URL,并在<a href="[the_URL]”>
- JavaScript异常:“;不成形”;在firefox浏览器上;XMLHttpRequest"chrome浏
- button1.Attributes.Add(“onclick"“javascript: window.open