如何在IE中禁用文件输入文本框?

Mat*_*ick 8 html internet-explorer file input filepath

是否可以阻止用户在IE中输入文件输入文本框?我问的原因是,如果用户输入的文本看起来不像文件系统路径(例如,不是以c:...开头),那么当用户点击提交按钮时,不会发生任何事情.

我要么不允许用户输入框或让表单正常提交.

我发现同样的问题在这里被问到没有答案:http: //www.webmasterworld.com/html/3290988.htm

如果没有其他合适的答案,这个人想出了一个我可以使用的黑客:http: //www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom

编辑:澄清 - 如果用户在"浏览"按钮旁边的文本框中键入"不是文件路径"并单击提交,则在IE中不会发生任何事情.表单将不会提交 - 当<input type ="file">框没有真正的文件路径时,IE不允许提交表单.

rni*_*sen 7

这个怎么样?您无法键入或右键单击并粘贴.

<input type="file" name="file" onKeyDown="this.blur()" onContextMenu="return false;">
Run Code Online (Sandbox Code Playgroud)


Mat*_*ick 2

我用另一种方法解决了这个问题,使用按钮而不是提交,并使用 JavaScript 在提交之前检查值。

<input type="file" name="inputFile">
<input type="button" onclick="if(fileHasValidPath()) { submitForm(); }" value="Submit">

function fileHasValidPath() {
  if (isIE()) {
    var inputFile = document.forms[0].inputFile;
    if (inputFile.value != "" && /^(\w:)|(\\)/.test(inputFile.value)) {
      alert("File is not a valid file.  Please use the Browse button to select a file.");
      inputFile.select();
      inputFile.focus();
      return false;
    }
  }

  return true;
}

function submitForm() {
  document.forms[0].submit();
}
Run Code Online (Sandbox Code Playgroud)

我意识到仍然需要对文件进行服务器端验证,但这只是为了防止用户单击“提交”按钮而看不到任何事情发生。此外,它假定 IE 使用 Windows 操作系统。

  • “此外,它假设 IE 使用 Windows 操作系统。” -&gt; 我无法计算我花了多少时间咒骂做出这些假设的网站...... (2认同)