Открыть диалоговое окно загрузки файла при щелчке

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

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

Ниже представлен javascript:

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

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

Ответ 1

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

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

Существует только один IE для IE, который выполняет блокировку, а в других браузерах это не так.

Ответ 2

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

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

Ответ 3

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

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