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