IE очищает ввод [type = «file»] при отправке

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

    <!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: ввод файла будет скрыт, поэтому пользователь будет работать только с фальшивой кнопкой.

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

Ответы на вопрос(4)

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

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

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

 Andrey Koltsov18 сент. 2013 г., 19:27
Я добавлю образец здесьjsfiddle.net/VBGpm/1

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

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

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

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

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

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

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

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

Ваш ответ на вопрос