Отображение диалогового окна браузера «Выбрать файл» при фокусировке ввода [тип = файл] с помощью клавиатуры - PullRequest
1 голос
/ 14 ноября 2009

Как гласит заголовок, я хочу, чтобы диалоговое окно «Выбрать файл» открывалось, когда определенный 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') для ввода файла, похоже, вообще ничего не делает.

(Я понимаю, что это может вызвать проблемы с доступностью, поэтому давайте не будем это обсуждать. Спасибо.)

Ответы [ 2 ]

2 голосов
/ 14 ноября 2009

Это будет работать в IE и Safari (я думаю), но не в Opera или Firefox, так как они не реализовали событие click () для элементов загрузки файлов - edit: пока.

1 голос
/ 14 ноября 2009

Я сомневаюсь, что вы сможете активировать диалог из соображений безопасности. В зависимости от браузера должно произойти настоящее нажатие.

Я знаю, что у Flash / Flex есть это требование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...