1

input正如标题所说,我希望通过在表单字段中切换(使用键盘导航)在某个获得焦点时打开“选择文件”对话框。默认情况下,“选择文件”窗口仅在单击该字段时打开。

我为这个问题在 JS Bin 上建立了一个页面:http: //jsbin.com/areba/edit

目前,此页面包含以下代码:

<!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>

如您所见,有一个文本输入和一个文件输入。这个想法是,当文本输入获得焦点时,文件输入被“点击”或其他任何东西,“选择文件”窗口打开。

.css('background', 'lime')声明似乎工作正常;但是,调用.trigger('click')文件输入似乎什么都不做。

(我意识到这可能会导致可访问性问题,所以请不要讨论这个问题。谢谢。)

4

2 回答 2

2

这将适用于 IE 和 Safari(我认为),但不适用于 Opera 或 Firefox,因为它们尚未实现文件上传元素的 click() 事件 - 编辑:尚未。

于 2009-11-14T15:44:18.693 回答
1

出于安全原因,我怀疑您是否能够激活对话框。必须发生真正的点击事件,具体取决于浏览器。

我知道 Flash/Flex 有这个要求。

于 2009-11-14T15:18:41.510 回答