Исправлена ​​ошибка загрузки 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. Работает во всех браузерах.