我有一个简单的表格。它包含" FILE"类型的输入。和一个提交按钮。它正在进行508合规性测试,他们遇到了问题。
如果您选择FILE输入并按Enter键,IE将提交表单。我的理解是这是正确的行为。我没有做任何Javascript或其他任何故意改变按键的行为。
我们的508测试人员不同意,并认为按下输入FILE输入应打开浏览对话框。我还没有找到任何结论,但我希望有人可以为我澄清。表格样本如下。
<form id="upload_Form" METHOD="POST" ENCTYPE="multipart/form-data" action="" NAME="uploadForm">
<INPUT TYPE="FILE" NAME="filenames" id="filenames" title="Select File for Upload">
<input type="submit" value="Upload"/>
</form>
答案 0 :(得分:2)
实际上,这是达成共识的问题。我个人认为使用输入键而不是空格来触发浏览对话框在可访问性方面是正确的行为 - 对于普通用户来说更直观,让我们说。 这就是为什么WebKit正在这样做,而不是在上传输入集中时提交表单。
一个简单的jQuery解决方法,作为IE的修复:
$(document).keypress(
function(event){
if (event.which == '13') {
event.preventDefault();
$('#upload-form').click();
}
});
答案 1 :(得分:0)
在<input type="file"/>
元素中,在现代浏览器中,焦点转到调用文件选择对话框的按钮。点击进入该实例应该调用对话框而不是提交表单。当然,IE以自己的方式做事。我倾向于将IE符合标准,而不是相反。
但更重要的是,如果该字段尚未填写,为什么还要刻意提交表格?这充其量只是验证错误。