Я пытаюсь вызвать окно загрузки (кнопка просмотра), используя jQuery.
Метод, который я попробовал сейчас:
$('#fileinput').trigger('click');
Но это не похоже на работу. Пожалуйста помоги. Спасибо.
javascript
jquery
css
Алек Смарт
источник
источник
Ответы:
Это связано с ограничением безопасности.
Я обнаружил, что ограничение безопасности действует только тогда, когда для
<input type="file"/>
него установлено значениеdisplay:none;
или установленоvisbilty:hidden
.Таким образом , я пытался позиционировать его вне области просмотра, установив
position:absolute
иtop:-100px;
и вуаля она работает.см. http://jsfiddle.net/DSARd/1/
Назовите это взломать.
Надеюсь, что это работает для вас.
источник
left: -100px;
. Вы никогда не знаете, как долго может быть страницаэто сработало для меня:
JS:
HTML:
CSS:
>>> Еще один, который работает кросс-браузер: <<<
Идея состоит в том, что вы накладываете невидимую огромную кнопку «Обзор» поверх своей кнопки. Поэтому, когда пользователь нажимает вашу пользовательскую кнопку, он на самом деле нажимает кнопку «Обзор» собственного поля ввода.
JS Fiddle: http://jsfiddle.net/5Rh7b/
HTML:
CSS:
JavaScript:
источник
height
предлагается изменить наheight: 100%
Вы можете использовать элемент LABEL ex.
Это вызовет входной файл
источник
У меня это работает (= проверено) в IE8 +, последние FF и Chrome:
Клавиша фокусируется перед нажатием кнопки (иначе хром игнорирует ее).
Примечание: вам НЕОБХОДИМО, чтобы ваш вход отображался и отображался (как в, так
display:none
и нетvisibility:hidden
). Я предлагаю (как и многие другие ранее) абсолютно позиционировать вход и выбросить его за пределы экрана.источник
Проверьте мою скрипку.
http://jsfiddle.net/mohany2712/vaw8k/
источник
adardesign обнаружил, что элемент ввода файла игнорируется, когда он скрыт. Я также заметил, что многие люди смещают размер элемента до 0 или выталкивают его за пределы с помощью настроек позиционирования и переполнения. Это все прекрасные идеи.
Альтернативный способ, который также, кажется, работает отлично, это просто установить непрозрачность на 0 . Тогда вы всегда можете просто установить положение, чтобы оно не смещало другие элементы, как это делает Hide. Просто кажется немного ненужным смещать элемент почти на 10 тысяч пикселей в любом направлении.
Вот небольшой пример для тех, кто хочет один:
источник
Ради любопытства вы можете делать что-то, что хотите, динамически создавая форму загрузки и входной файл, не добавляя его в дерево DOM:
Нет необходимости добавлять uploadForm в DOM.
источник
Правильный код:
источник
Это нарочно и по замыслу. Это проблема безопасности.
источник
На самом деле, я нашел очень простой способ для этого, а именно:
Таким образом, ваше поле входного файла может иметь CSS свойства отображения на ни и еще выиграть сделку :)
источник
Слишком поздно, чтобы ответить, но я думаю, что эта минимальная установка работает лучше всего. Я тоже ищу то же самое.
// CSS
jsbin
демонстрация кнопок ввода файла начальной загрузки
источник
Это очень старый вопрос, но, к сожалению, этот вопрос все еще актуален и требует решения.
(Удивительно простое) решение, которое я придумала, состоит в том, чтобы «скрыть» поле ввода реального файла и обернуть его тегом LABEL (для улучшения может быть основан на Bootstrap и HTML5).
See here:
Пример кода здесьТаким образом, поле ввода реального файла невидимо, и все, что вы видите, это настраиваемая «кнопка», которая на самом деле является измененным элементом LABEL. Когда вы нажимаете на этот элемент LABEL, появляется окно для выбора файла, и файл, который вы выбираете, перейдет в поле ввода реального файла.
Кроме того, вы можете манипулировать внешним видом и поведением по своему усмотрению (например: получить имя выбранного файла из входного файла файла после выбранного и показать его где-нибудь. Элемент LABEL не делает этого автоматически, конечно. Я обычно просто помещаю это в LABEL, как его текстовое содержание).
Осторожно, хотя! Манипулирование внешним видом и поведением ограничено тем, что вы можете себе представить и придумать. ;-) ;-)
источник
Мне удалось с помощью простого $ (...). Click (); с JQuery 1.6.1
источник
или просто
источник
У меня были проблемы с пользовательской проверкой на стороне клиента,
<input type="file"/>
когда я использовал поддельную кнопку для ее запуска, и решение @Guillaume Bodi сработало для меня (также сopacity: 0;
Chrome)и стиль CSS для загрузки ввода
источник
Попробуйте это, это взломать. Положение: абсолютное значение для Chrome, а триггер («изменение») для IE.
источник
$.browser
не рекомендуется в более новых версиях jQueryМоя проблема была немного другой на iOS 7. Оказалось, что FastClick вызывал проблемы. Все, что мне нужно было сделать, это добавить
class="needsclick"
в мою кнопку.источник
Это, вероятно, лучший ответ, принимая во внимание проблемы кроссбраузерности.
CSS:
JS:
HTML:
источник
Я думаю, я понимаю вашу проблему, потому что у меня есть подобное. Таким образом, у тега
<label>
есть атрибут для, вы можете использовать этот атрибут, чтобы связать ваш ввод с type = "file". Но если вы не хотите активировать это с помощью этого ярлыка, потому что какое-то правило вашего макета, вы можете сделать так.Конечно, вы адаптируете это для своих собственных целей и макета, но я знаю, что это более простой способ заставить его работать !!
источник
Основываясь на ответе Гийома Боди, я сделал это:
это означает, что он скрыт для начала и затем отображается для триггера, а затем снова скрыт сразу.
источник