有一个非常奇怪的问题似乎是IE特定的。
我有一个带有FileUpload控件的表单。但是,我不可能(据我所知)单独设置此控件的按钮和文本框的样式,所以我所做的是向页面添加第二个按钮,按照我的要求设置样式。在此按钮的OnClientClick事件中,它只需单击FileUpload控件的“浏览”按钮,然后选择该文件。然后我有一个“导入”按钮,它回发并导入文件。
在Chrome和Firefox中,这一切都很棒。但是,我刚刚在IE中进行了测试,第一次点击“导入”按钮时,除了清除FileUpload控件外没有任何反应。再次单击该按钮,它会回发,但现在没有要上载的文件。我在客户端点击按钮上发出警告,然后点亮,但它不会回发。
然而,如果我直接使用“浏览”按钮,它一切正常,所以它似乎与Javascript单击按钮对我来说,但我不明白为什么会这样,而且它似乎是IE具体。 (IE9)。
有谁知道可能导致这种情况的原因,以及我如何解决它(不希望回到使用非常时尚的FileUpload控件)?
代码如下:
<script>
function SelectFile() {
$("#<%= uplFile.ClientID %>").click();
}
</script>
<asp:Button runat="server" ID="btnSelectFile" OnClientClick="SelectFile();return false;" Text="Select File" />
<asp:FileUpload runat="server" ID="uplFile" Width="250" CssClass="FileUpload" OnChange="ShowSelectedFilename(this.value)" />
<asp:Button runat="server" ID="btnImport" Text="Import" OnClick="btnImport_Click" />
注意:我也尝试过没有“返回假”;在btnSelectFile按钮上的OnClientClick事件内。我也尝试使用document.getElementById而不是JQuery来进行点击,但是也遇到了同样的问题。
非常感谢任何帮助。
更新:
从谷歌上搜索更多我正在收到的其他错误(例如“尝试以编程方式提交表单或点击导入按钮时访问被拒绝”),这似乎可能归结为IE中的安全功能虽然我还不完全相信。
基本上,有充分理由,微软不希望开发人员(或黑客)能够搞乱上传控件。例如,他们不希望开发人员使用javascript,在提交表单时,能够将用户选择的文件名更改为“c:\ mysecretfile.txt”,因此能够从客户端上传他们喜欢的任何文件。但是,我实际上并没有更改文件名,我正在做的就是以编程方式单击“浏览”按钮,然后从那里开始工作就像用户自己点击它一样,但是我希望它可以用同样的东西做。
除非有人知道不同吗?