Вопрос по javascript, html, internet-explorer – IE очищает ввод [type = «file»] при отправке

1

У меня есть страница (демонстрация):

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <script type="text/javascript" src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script>
        <script type="text/javascript">
            $(function() {
                $("#id_button").click(function(e) {
                    $("#id_file").click();
                });
            });
        </script>
    </head>
    <body>
        <form method="post" enctype="multipart/form-data" action="http://www.google.com/">
            <input type="file" name="file" id="id_file" />
            <input type="button" id="id_button" value="fake button" />
            <input type="submit">
        </form>
    </body>

</html>

если я открою диалоговое окно просмотра, нажав кнопку «Подделка», выберите файл (я вижу его вinput[type="file"]), затем нажмите кнопку «Отправить», и сообщение не появится,input[type="file"] очищается

Что я должен изменить, чтобы это заработало?

Я получаю эту проблему в IE8 и IE10.

PS: ввод файла будет скрыт, поэтому пользователь будет работать только с фальшивой кнопкой.

Выглядит хорошо для меня.jsfiddle.net/JGTHB/5 reggaemahn
Что вы подразумеваете под «очищенным». Вы имеете в виду, что IE удаляет разметку или вы хотите удалить выбранный файл? Если у вас естьdisplay: noneпопробуйте изменить это наvisibility: hidden вместо. reggaemahn
@JeevanJose IE удаляет выбранный файл из файла ввода. Andrey Koltsov
@JeevanJose no, после сброса предупреждения. и сосредоточиться на нем. Andrey Koltsov

Ваш Ответ

4   ответа
3

когда речь заходит о том, что они позволяют вам делать, начиная с javascript и заканчивая программным нажатием кнопки ввода для ввода файлов.

Лучшее решение, которое я нашел, которое работает между браузерами, это установить непрозрачность на 0 (не использовать display: none) и поместить кнопку под входом, чтобы пользователь нажимал на ввод 0 непрозрачности для вашей кнопки, таким образом вызывая диалог выбора входа.

Хорошая рецензия на стилизацию файла ввода может быть найдена здесь:http://www.quirksmode.org/dom/inputfile.html

Я добавлю образец здесьjsfiddle.net/VBGpm/1 Andrey Koltsov
0

трибута 'метка' идентификатор элемента входного файла.

Затем, когда вы нажмете на метку, элемент входного файла «щелкнет», и откроется диалоговое окно файла.

Тогда просто стилизуйте этикетку так, как вам нравится. Пробовал на разных версиях IE.

0

что все браузеры так поступают по соображениям безопасности Когда вы отправляете форму, вы перенаправляетесь на другую страницу (или ту же страницу), и если вы перенаправлены на ту же страницу, форма повторно инициализируется. В этом случае вы просто НЕ можете установить значение файла по соображениям безопасности.

Из примераКак установить значение для файла ввода в HTML?ты не хочешь, чтобы это случилось

<form name="foo" method="post" enctype="multipart/form-data">
    <input type="file" value="c:\passwords.txt">
</form>
<script>document.foo.submit();</script>
но почему это работает нормально, если я нажимаю на ввод файла? Andrey Koltsov
1

http://jsfiddle.net/j38Wj Прекрасно работает в Google Chrome, но не работает в IE 10. Поскольку я думаю, что IE не позволяет выбрать файл с помощью внешнего события «click». Единственный способ «настроить» ввод [type = file] - использовать стиль непрозрачности, чтобы скрыть его, и относительное расположение настраиваемого элемента управления кнопки под ним. Рабочий пример:http://blueimp.github.io/jQuery-File-Upload/

blueimp.github.io/jQuery-File-Upload выглядит действительно круто, я попробую завтра, твой jsfiddle не работает. Andrey Koltsov

Похожие вопросы