1

正如标题所示,我希望'选择文件'对话框在特定input通过在表单字段使用键盘导航)。默认情况下,只有在单击该字段时才会打开“选择文件”窗口。当通过键盘导航对焦输入[type = file]时,显示浏览器的'选择文件'对话框

我提出了一个页面上JS斌针对此问题: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')似乎什么都不做。

(我知道这可能会导致访问性问题,所以,请让我们不要讨论,谢谢!)

回答

2

这将工作在IE和Safari(我认为),但不是在Opera或Firefox,因为他们还没有实现文件上传元素的click()事件 - 编辑:但。

1

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

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