阻止IE用户输入文件上传输入

时间:2010-03-17 15:39:56

标签: asp.net html file-upload

我的测试人员发现,如果您在文件上传输入中键入自由文本,那么在删除该文本之前,页面上的所有按钮都不起作用(因此无法提交页面)。

我可以使用以下ASPX代码复制它(没有代码隐藏):

<%@ Page Language="C#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <body>
    <form id="form1" runat="server">
      <div>
        <asp:FileUpload ID="fuTest" runat="server" />
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" />
      </div>
    </form>
  </body>
</html>

(请注意,我没有将任何处理程序绑定到页面;尽管如此,只有在上传文本框中没有输入任何文本的情况下单击提交按钮时才会提交页面)

有没有办法阻止用户在文件上传控件中输入自由文本?似乎这只能在IE中实现 - Firefox和Chrome本身阻止文本输入上传输入字段。

我已经在其他地方看到了建议隐藏输入并用标签/按钮组合替换它的解决方案,但这似乎可能导致更多问题并且在浏览器中工作不一致。

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

根据@ Jer的建议,我能够通过处理上传中的keypress事件来阻止对文件上传的输入,而不会破坏任何其他功能。使用jQuery:

$(document).ready() {
    $('input:file').keypress(function() {
      return false;
    });
}

答案 1 :(得分:2)

我不确定这是否会按预期工作,但您尝试过:<input readonly="readonly">

答案 2 :(得分:1)

对于所有现有文件控件,接受的答案完全正确。

但在大多数实际情况中,我们提供了动态添加更多文件控件的功能,以便用户可以选择多个文件。

此案例中解决方案的关键是.live function

解决方案如下:

$('input:file').live('keypress', function() { return false; });