Исправлена ошибка загрузки Chrome и Firefox
Чтобы иметь полный стиль пользовательского интерфейса над формой type="file" upload, у меня есть поле псевдо-формы (#fileName), просмотр, загрузка. У меня есть скрытая форма ниже с полями фактического поля формы (#fileAttach), просмотра и выгрузки. Я пытаюсь вызвать его таким образом, что когда пользователь нажимает на просмотр, он запускает фактическую кнопку обзора, а затем захватывает значение фактического пути файла поля ввода и заполняет файл в поле псевдо-ввода.
browse = function () {
$("#fileAttach").click();
var file = $("#fileAttach").val();
$("#fileName").val(file);
}
Он работает в Safari и IE. Тем не менее, в Chrome и Firefox, похоже, перестает выполняться после того, как пользователь выберет файл. Имя файла не передается в поле псевдоформы. Однако, если я запустил browse() второй раз, он сразу же заполнил первый путь к файлу в поле псевдоформы, а затем запустил новое окно просмотра файлов. Кажется, что Chrome/FF выполняет только первую строку функции и паузу. 2-я и 3-я строки выполняются, если функция снова вызвана и т.д.
Что происходит здесь и как я могу его решить? Заранее благодарю вас.
Ответы
Ответ 1
Браузеру действительно не нравится, когда вы запускаете диалоговое окно загрузки через код, который я нашел.
Я всегда показывал свою собственную кнопку обзора и абсолютно позиционировал input[type=file]
поверх opacity: 0
. Работает во всех браузерах.