Как связать кнопку ввода с окном выбора файла?
Возможный дубликат:
Ввод файла триггера JQuery
Я работаю над формой, которая позволяет пользователям загружать изображения на веб-сайт. Пока у меня есть решение перетаскивания, работающее в Chrome и Safari. Однако мне также необходимо поддерживать действие пользователей, которые нажимают кнопку и просматривают файлы традиционным образом.
Подобно тому, что это сделало бы:
<input type="file" name="my_file">
Однако вместо того, чтобы иметь неуклюжую область описания файла и не редактируемую кнопку "Обзор", я бы скорее использовал что-то вроде этого:
<input type="button" id="get_file">
Поэтому мой вопрос заключается в том, как заставить эту кнопку открывать окно выбора файла и обрабатывать выбор так же, как type="file"
будет работать?
Приветствия.
Мое решение
HTML:
<input type="button" id="my-button" value="Select Files">
<input type="file" name="my_file" id="my-file">
CSS
#my-file { visibility: hidden; }
JQuery
$('#my-button').click(function(){
$('#my-file').click();
});
Работа в Chrome, Firefox и IE7 + до сих пор (не пробовал IE6).
Ответы
Ответ 1
Вы можете использовать JavaScript и запускать скрытый ввод файла при нажатии кнопки.
http://jsfiddle.net/gregorypratt/dhyzV/ - простой
http://jsfiddle.net/gregorypratt/dhyzV/1/ - fancier с небольшим JQuery
Или вы можете поменять div непосредственно над вводом файла и установить pointer-events
в CSS на none, чтобы события click могли проходить через вход файла, который находится "за" fancy div. Однако это работает только в некоторых браузерах; http://caniuse.com/pointer-events
Ответ 2
Если вы хотите разрешить пользователю просматривать файл, вам нужно иметь input type="file"
. Ближайшим, к которому вы могли бы обратиться, было бы разместить input type="file"
на странице и скрыть его. Затем активируйте событие щелчка входа при нажатии кнопки:
#myFileInput {
display:none;
}
<input type="file" id="myFileInput" />
<input type="button"
onclick="document.getElementById('myFileInput').click()"
value="Select a File" />
Здесь рабочая скрипка.
Примечание: Я бы не рекомендовал этот подход. input type="file"
- это механизм, который пользователи привыкли использовать для загрузки файла.