открыть диалог загрузки файла по клику - PullRequest
23 голосов
/ 09 июня 2011

Мне нужно открыть диалоговое окно загрузки файла, нажав какую-то другую кнопку, т.е. я скрываю элемент управления загрузкой файла (видимость: скрытый), а при нажатии какой-либо другой кнопки я хочу открыть это диалоговое окно.Ниже приведен код, который у меня есть:

<input type="file" style="visibility: hidden;" />

Ниже приведен код JavaScript:

$('#button').click(function() {
    $('input[type=file]').click();
});

Он отлично работает в Firefox 4 и IE8, но в chrome12 он не работает, т.е.диалог не открывается.Есть идеи почему?

Ответы [ 3 ]

8 голосов
/ 16 ноября 2012

Сегодня протестировал простой код, приведенный в вопросе, и ситуация изменилась:

  • IE9: работает
  • Chrome23: работает
  • Firefox15: работает

Есть только одна загвоздка - в IE .click () является блокирующей операцией, а в других браузерах - нет.

6 голосов
/ 09 июня 2011

В вашем примере входной файл не имел идентификатора, но вы пытаетесь сослаться на него с помощью #input. Это работает для меня:

$('#button').click(function() {
    $('input[type=file]').click();
});
0 голосов
/ 09 июня 2011

Вы должны поместить input [file] чуть выше вашего пользовательского элемента управления. А затем привязать его к клику.

Также увеличьте размер шрифта, так как только так вы сможете увеличить его высоту.

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