Открыть окно просмотра в 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");
});
Теперь приведенный выше код предупреждает "Двойной", но не открывает окно. Есть ли способ исправить это?
Спасибо заранее.
Ответы
Ответ 1
Поскольку весь элемент управления является родным для браузера (и никогда не отображается как текстовое поле плюс кнопка), вы просто не имеете доступа к методам/событиям, которые позволят вам вызвать кнопку загрузки. Я считаю, что это в основном для того, чтобы сайты не обманывали пользователя при загрузке нежелательных файлов.
Если вам удастся потратить немного времени на реализацию обходного пути, this отлично справляется с созданием довольно приятного компонента загрузки, который легче управлять. Я уверен, что быстрый Google перечислит вам много других примеров того, как стилизовать компонент загрузки файлов.
Ответ 2
Просто проверил ваш код с JSFiddle на IE6 (http://jsfiddle.net/SUWRK/), и, по моему мнению, он работает так, как вы ожидаете... Предупреждение появляется на одном событии с кликом (пожалуйста обратите внимание, что сложно поймать событие dblclick в IE < 9 - см. https://gist.github.com/399624).
Вы уверены, что с большим набором кода не происходит что-то еще?