Подтвердить что ты не робот

Открыть окно просмотра в IE при вводе одного клика

У меня возникли проблемы с тем, чтобы файл ввода работал так, как я его хочу. Элемент файла существует из двух частей, текстового поля и кнопки обзора. В других браузерах, чем IE, щелкнув любой из них, открывается окно, в котором вы можете выбрать файлы. Однако в IE он открывается только при нажатии кнопки обзора. Если я нажму на текстовое поле рядом с ним, я должен дважды щелкнуть, чтобы открыть окно. Есть ли способ исправить это с помощью javascript, чтобы один щелчок по текстовому полю также открыл окно? Я попробовал следующее, но это не сработало. (код очень упрощен из реального примера)

Html: <input id="file" name="file" type="file"/>

JS/jQuery:

$("#file").click(function(){
    $(this).trigger("dblclick");
});

$("#file").dblclick(function(){
    alert("Double");
});

Теперь приведенный выше код предупреждает "Двойной", но не открывает окно. Есть ли способ исправить это?

Спасибо заранее.

4b9b3361

Ответ 1

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

Если вам удастся потратить немного времени на реализацию обходного пути, this отлично справляется с созданием довольно приятного компонента загрузки, который легче управлять. Я уверен, что быстрый Google перечислит вам много других примеров того, как стилизовать компонент загрузки файлов.

Ответ 2

Просто проверил ваш код с JSFiddle на IE6 (http://jsfiddle.net/SUWRK/), и, по моему мнению, он работает так, как вы ожидаете... Предупреждение появляется на одном событии с кликом (пожалуйста обратите внимание, что сложно поймать событие dblclick в IE < 9 - см. https://gist.github.com/399624).

Вы уверены, что с большим набором кода не происходит что-то еще?