Мне нужно решение для отображения диалогового окна открытия файла в HTML при нажатии div
. Диалоговое окно открытия файла должно открываться при div
нажатии.
Я не хочу отображать поле входного файла как часть HTML-страницы. Он должен отображаться в отдельном диалоге, который не является частью веб-страницы.
javascript
file
dialog
Ковчег
источник
источник
Ответы:
Вот хороший
Демо Fine Uploader
Это
<input type='file' />
сам по себе контроль. Но поверх него помещается div, и для этого применяются стили css. Непрозрачность файлового элемента управления установлена на 0, поэтому кажется, что диалоговое окно открывается при нажатии на div.источник
для IE добавьте это:
источник
document.getElementById("logo").click()
достаточно. Также они показывают другой способ «перетащить и оставить». developer.mozilla.org/en-US/docs/Web/API/File/…Я не знаю, почему никто не указал на это, но вот способ сделать это без Javascript, и он также совместим с любым браузером.
РЕДАКТИРОВАТЬ: в Safari
input
отключается при скрытии с помощьюdisplay: none
. Лучше было бы использоватьposition: fixed; top: -100em
.При желании вы можете идти «правильный путь» , используя
for
вlabel
указывающей наid
входных данных , как это:источник
<input>
тег должен иметьname
атрибут; 2. Еслиfor
атрибут указан,<input>
для тега файла потребуется расширениеid
.Simplicity is the ultimate sophistication
display: none
, отключены. Обходной путь заключается в использовании другого подхода, чтобы скрыть ввод. Я обновлю ответ, чтобы отразить это.На самом деле вам не нужно все это с непрозрачностью, видимостью,
<input>
стилем и т. Д. Просто взгляните:Демо на jsFiddle . Протестировано в Chrome 30.0 и Firefox 24.0. Однако не работал в Opera 12.16.
источник
Это то, что у меня сработало лучше всего (протестировано в IE8, FF, Chrome, Safari).
Объяснение: я разместил ввод файла непосредственно над элементом, на который нужно щелкнуть, поэтому любые щелчки будут либо на нем, либо на его метке (которая вызывает диалоговое окно загрузки, как если бы вы щелкнули саму метку). У меня были некоторые проблемы с тем, что часть кнопок ввода по умолчанию торчала из стороны метки, поэтому
overflow: hidden
на входе иdisplay: inline-block
на этикетке были необходимы.источник
Что делать, если на клиентском компьютере отключен javascript? Используйте следующее решение для всех сценариев. Вам даже не нужен javascript / jQuery. :
HTML
CSS
Объяснение:
for="Your input Id"
. По умолчанию запускает событие щелчка по HTML. Таким образом, он по умолчанию запускает событие щелчка, нет необходимости в jQuery / javascript. Если это просто делается с помощью HTML, зачем использовать jQuery / jScript? И вы не можете сказать, отключил ли клиент JS. Ваша функция должна работать, даже если JS отключен.Рабочий jsFiddle (вам не нужны JS, jquery)
источник
Сначала добавьте в заголовок теги:
если у вас уже есть сценарий теги , просто добавьте эти функции выше.
В теги тела или формы добавление:
Независимо от того, где в вашем html, это похоже на то, что вы создали новый экземпляр класса типа OpenFileDialog как глобальную переменную, имя которой является идентификатором элемента, независимо от того, где в вашем коде или xaml, но в вашем скрипте или коде , вы не можете ввести его имя, а затем прочитать свойство или вызвать функцию, потому что существуют глобальные функции, которые выполняют те функции, которые не определены в элементе input type = "file". Вам просто нужно дать этим функциям идентификатор скрытого ввода type = "file", который является именем экземпляра OpenFileDialog в виде строки.
Чтобы облегчить себе жизнь при создании экземпляров диалоговых окон с открытыми файлами в HTML, вы можете создать функцию, которая делает это:
и если вы хотите удалить диалог открытия файла, вы можете создать и использовать следующую функцию:
но перед тем, как удалить диалоговое окно открытия файла, убедитесь, что он существует, выполнив и используя следующую функцию:
и если вы не хотите создавать и добавлять диалоговые окна открытия файлов в теги body или form в html, потому что это добавляет скрытый input type = "file" s, то вы можете сделать это в сценарии, используя функцию создания выше :
Убедитесь, что рядом с тегами тела или формы вы добавили:
Вам не нужно делать эту строку выше, если вы это уже сделали.
СОВЕТ: вы можете добавить в свой проект или веб-сайт новый файл JScript, если у вас его еще нет, и в этом файле вы можете поместить все функции диалога открытия файла подальше от тегов скрипта и страницы HTML или веб-формы и использовать их на странице html или веб-формы из этого файла JScript, но не забудьте перед этим связать страницу html или веб-формы с файлом JScript. Вы можете сделать это, просто перетащив файл JScript на свою html-страницу в голове.теги. Если ваша страница представляет собой веб-форму, а не простой html, и у вас нет тегов заголовков, поместите ее в любое место, чтобы она могла работать. Не забудьте определить глобальную переменную в этом файле JScript, значением которой будет ваше тело или идентификатор формы в виде строки. После того, как вы связали файл JScript со страницей html или веб-формы, вы можете загрузить событие тела формы, установить значение этой переменной для вашего тела или идентификатора формы. Затем в файле JScript вам больше не нужно указывать документу идентификатор тела или формы одной страницы, просто укажите значение этой переменной. Можно назвать эту переменную bodyId или FormID или bodyOrFormId или любое другое имя , которое вы хотите.
Удачи чувак!
источник
Самый простой способ:
Что важно, использование
display: none
гарантирует, что не будет места для ввода скрытого файла (что происходит при использованииopacity: 0
).источник
AFAIK вам все еще нужен
<input type="file">
элемент, тогда вы можете использовать некоторые вещи из quirksmode, чтобы стилизовать егоисточник
Единственный недостаток
<input type="file">
- это встраивание прозрачного флеш-ролика поверх div. Затем вы можете использовать событие щелчка, созданное пользователем (соответствующее новым правилам безопасности Flash 10), чтобы инициировать вызов файла FileReference.browse из Flash .Он предлагает дополнительную зависимость от способа quirksmode, но взамен вы получаете гораздо больше событий (например, встроенных событий выполнения).
источник
Может использовать
источник