Почему IE не сбрасывает поле ввода файла? - PullRequest
4 голосов
/ 03 декабря 2011

Я изменил свою текущую форму, чтобы вызвать отправку формы после того, как пользователь выберет файл для загрузки.После завершения загрузки я вызываю:

$('#file').val('');

для сброса поля ввода файла.

HTML
<input name="file" type="file" id="file"/>

Это работает в Chrome, FF и Safari, но не работает в IE.Есть ли обходной путь или лучшее решение для IE?

1 Ответ

6 голосов
/ 03 декабря 2011

Нельзя изменить значение типа ввода файла, так как это может привести к уязвимости безопасности.Вместо этого просто замените входной файл новым.Вместо $('#file').val('') сделайте следующее:

$('#file').replaceWith('<input name="file" type="file" id="file"/>');

Еще лучше было бы клонировать копию оригинальной версии и сохранить ее в памяти.Когда вам нужно заменить его, просто используйте клонированную копию и снова клонируйте ее.Итак, что-то вроде этого:

$(document).ready(function() {
    var empty_input = $('#file').clone();

    $('#the-form').on('change', '#file', function(el) {
        $('#the-form').submit(); // assuming the target is a hidden iframe
        $(this).replaceWith(empty_input.clone());
    });
})

Обратите внимание, что я использую делегированную версию с jQuery.on () , поэтому событие все равно будет работать на новом входе сразу после его замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...