У меня есть скрытый элемент ввода файла. Можно ли вызвать диалоговое окно выбора файла из события нажатия кнопки?
javascript
jquery
html
Тамаки
источник
источник
click()
наdisplay:none
входе , и она работалаclick()
работаю над элементом сdisplay: none
работами! ;) Как все изменилось за последние четыре года.hidden
Вместо этого вы можете использовать атрибутstyle="visibility:hidden"
:<input id="myInput" type="file" hidden>
( w3schools.com/tags/att_global_hidden.asp )В большинстве ответов здесь отсутствует полезная информация:
Да, вы можете программно щелкнуть элемент ввода с помощью jQuery / JavaScript, но только если вы делаете это в обработчике событий, принадлежащем событию, которое было запущено ПОЛЬЗОВАТЕЛЕМ!
Так, например, ничего не произойдет, если вы, сценарий, программно нажмете кнопку в обратном вызове ajax, но если вы поместите ту же строку кода в обработчик событий, который был вызван пользователем, он будет работать.
PS
debugger;
Ключевое слово срывает окно просмотра, если оно до программного щелчка ... хотя бы в хроме 33 ...источник
$(staticElementParent).on("click", "dynamicChild", function(){})
debugger;
ключевое слово больше не мешает программному кликуНа заметку, есть альтернативное решение, не требующее javascript. Это своего рода уловка, использующая тот факт, что щелчок по метке устанавливает фокус на связанный ввод.
Вам нужен атрибут
<label>
с правильнымfor
атрибутом (указывает на ввод), возможно, стилизованный как кнопка (с начальной загрузкой, используйтеbtn btn-default
). Когда пользователь щелкает ярлык, открывается диалоговое окно, например:источник
Я не уверен, как браузеры обрабатывают щелчки по
type="file"
элементам (проблемы безопасности и все такое), но это должно работать:Я тестировал этот JSFiddle в Chrome, Firefox и Opera, и все они отображают диалог просмотра файлов.
источник
hover
события: jsfiddle.net/UQfaZ/1Я оборачиваю
input[type=file]
тег ярлыком, затем оформляю егоlabel
по своему вкусу и скрываюinput
.Чисто CSS-решение.
источник
<input type="file" hidden>
чтобы избавиться от необходимости применять стиль CSS.По сути, единственный способ - создать
<input type="file">
элемент, а затем, к сожалению, имитировать щелчок.Есть крошечный плагин (бесстыдный плагин), который избавит от необходимости делать это все время: file-dialog
источник
Лучшее решение, работает во всех браузерах ... даже на мобильном телефоне.
Скрытие типа входного файла вызывает проблемы с браузерами, непрозрачность - лучшее решение, потому что оно не скрывается, а просто не отображается. :)
источник
visibility:hidden
это лучший выбор.visibility: hidden
по-прежнему влияет на макет.display: none
это то, что вы хотите.По соображениям безопасности кроссбраузерного способа сделать это невозможно. Обычно люди накладывают входной файл на что-то еще и устанавливают его видимость как скрытую, чтобы он запускался сам по себе. Больше информации здесь.
источник
<input type="file">
, а не о<select>
.$.click()
.Убедитесь, что вы используете привязку для получения свойств компонентов в REACT
источник
Используя jQuery, вы можете вызвать
click()
для имитации щелчка.источник
Это сработало для меня:
источник
Для тех, кто хочет того же, но использует React
источник
источник