Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Javascript 显示浏览器&x2019;s&x2018;选择文件&x2019;通过键盘导航聚焦输入[type=file]时的对话框_Javascript_Jquery_Keyboard Navigation_File Io_Input Type File - Fatal编程技术网

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:还没有