Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
Html 如何在IE中禁用文件输入文本框?_Html_File_Internet Explorer_Input_Filepath - Fatal编程技术网

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

Html 如何在IE中禁用文件输入文本框?,html,file,internet-explorer,input,filepath,Html,File,Internet Explorer,Input,Filepath,是否可以阻止用户在IE中键入文件输入文本框?我问这个问题的原因是,如果用户输入的文本看起来不像文件系统路径(例如,不是以c:…)开头),那么当用户单击submit按钮时,什么也不会发生 我希望不允许用户在框中键入内容,或者让表单正常提交 我发现同样的问题在这里被问到,却没有得到回答: 这个人想出了一个技巧,如果没有其他合适的答案,我可以使用: 编辑:澄清-如果用户在“浏览”按钮旁边的文本框中键入“非文件路径”并单击提交,IE中不会发生任何事情。表单将不提交-IE不允许在框没有实际文件路径时提

是否可以阻止用户在IE中键入文件输入文本框?我问这个问题的原因是,如果用户输入的文本看起来不像文件系统路径(例如,不是以c:…)开头),那么当用户单击submit按钮时,什么也不会发生

我希望不允许用户在框中键入内容,或者让表单正常提交

我发现同样的问题在这里被问到,却没有得到回答:

这个人想出了一个技巧,如果没有其他合适的答案,我可以使用:

编辑:澄清-如果用户在“浏览”按钮旁边的文本框中键入“非文件路径”并单击提交,IE中不会发生任何事情。表单将不提交-IE不允许在框没有实际文件路径时提交表单。

您不能使用吗

<input ... disabled>

编辑:不,实际上这也阻止了提交。。。但是在HTML4中显然

<input ... readonly>


应该有用

一种方法是在Submit的按钮中添加一点javascript代码。其想法是验证该框,并停止提交或允许提交


但是,您最好只是验证服务器端的文件内容并将相应的错误返回给客户端。

这可能是一个不好的开始。如果用户未使用Windows操作系统并希望上载文件/home/user/example.txt,该怎么办


这种类型的检查可能更好地在服务器端实现。

我用另一种方法解决了这个问题,即使用按钮而不是提交,并在提交之前使用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();
}

函数fileHasValidPath(){
if(isIE()){
var inputFile=document.forms[0]。inputFile;
if(inputFile.value!=“”&&/^(\w:)|(\\)/.test(inputFile.value)){
警告(“文件不是有效文件。请使用浏览按钮选择文件。”);
inputFile.select();
focus();
返回false;
}
}
返回true;
}
函数submitForm(){
document.forms[0]。提交();
}

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

这个怎么样?您不能键入或右键单击并粘贴

<input type="file" name="file" onKeyDown="this.blur()" onContextMenu="return false;">


由于安全问题,input type=file元素的value属性为只读。您可以读取此属性并进行检查。如果它不符合您的规则,您将发出警告并让人修改它。 另一种方法是使用outerHTML属性覆盖它。 例如: 名为objInputFileElement的HTML输入文件元素。
objInputFileElement.outerHTML=“”

我找到了解决你问题的方法。
内容是否可编辑
选项如下:

<input type="file" name="name" contentEditable="false"/>

以下是
内容可编辑
选项的演示:

<input type="file" name="name" contentEditable="false" />

我的解决方案基于

因此,考虑到这个文件字段:

<input type="file" id="file_field">

注意:您必须使用keydown而不是keypress,因为它包括DEL和BACKSPACE以及任何打印键。

这将禁止用户实际单击“浏览”按钮来选择文件。我仍然希望他们能够选择一个文件。不是在服务器上,而是在浏览器上。。。当然,如果HTML设计更合理,用户可以篡改HTML/Javascript,仍然提交不符合网页检查内容的文件。确保它的唯一方法是在服务器端检查它。客户端仍然可以为非篡改用户节省一些时间和服务器资源。您还可以将验证方法添加到表单的onsubmit事件中,并使用标准的submit。“此外,它假设IE使用Windows操作系统。”->我无法计算我花在诅咒做出这些假设的网站上的时间……简单而优雅。工作+1.
$(document).ready( function() {
    $('#file_field').bind("keydown", function(e) {
        e.preventDefault();
    });
});