Javascript 显示浏览器&x2019;s&x2018;选择文件&x2019;通过键盘导航聚焦输入[type=file]时的对话框
正如标题所述,我希望当某个Javascript 显示浏览器&x2019;s&x2018;选择文件&x2019;通过键盘导航聚焦输入[type=file]时的对话框,javascript,jquery,keyboard-navigation,file-io,input-type-file,Javascript,Jquery,Keyboard Navigation,File Io,Input Type File,正如标题所述,我希望当某个输入通过在表单字段中切换(使用键盘导航)获得焦点时,打开“选择文件”对话框。默认情况下,“选择文件”窗口仅在单击字段时打开 我在JS Bin上为这个问题贴了一个页面: 目前,此页面由以下代码组成: <!doctype html> <html> <head> <title>Sandbox</title> <meta charset="utf-8"> </head>
输入通过在表单字段中切换(使用键盘导航)获得焦点时,打开“选择文件”对话框。默认情况下,“选择文件”窗口仅在单击字段时打开
我在JS Bin上为这个问题贴了一个页面:
目前,此页面由以下代码组成:
<!doctype html>
<html>
<head>
<title>Sandbox</title>
<meta charset="utf-8">
</head>
<body>
<form>
<input type="text">
<input type="file">
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(function() {
$('input[type=text]').focus(function() {
$(this).next('input[type=file]').css('background', 'lime').trigger('click');
});
});
</script>
</body>
</html>
沙箱
$(函数(){
$('input[type=text]')。焦点(函数(){
$(this).next('input[type=file]')).css('background','lime').trigger('click');
});
});
如您所见,有文本输入和文件输入。其思想是,当文本输入接收到焦点时,文件输入会被“单击”或其他任何内容,并打开“选择文件”窗口
css('background','lime')
语句似乎工作正常;但是,对文件输入调用.trigger('click')
,似乎什么也做不了
(我知道这可能会导致可访问性问题,所以请不要讨论这个问题。谢谢。)出于安全原因,我怀疑您是否能够激活该对话框。根据浏览器的不同,必须发生真正的单击事件
我知道Flash/Flex有这个要求。这在IE和Safari(我想)中适用,但在Opera或Firefox中不行,因为他们还没有实现文件上传元素的click()事件-edit:还没有