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有這個要求。

相關問題