как я могу reset ввести файл в IE, я использовал следующее, и он работал в chrome и FF, но не в IE
fileInputElement.value=""
какая альтернатива в IE?
как я могу reset ввести файл в IE, я использовал следующее, и он работал в chrome и FF, но не в IE
fileInputElement.value=""
какая альтернатива в IE?
Если fileInputElement
является самостоятельным в форме fileInputForm
, вы можете сделать:
window.fileInputForm.reset();
В противном случае для IE вам придется заменить элемент клоном:
fileInputElement.parentNode.replaceChild(
fileInputElement.cloneNode(true),
fileInputElement
);
Вы не можете reset вводить файл самостоятельно. Что вы можете сделать, это обернуть ввод файла в тег <form id="form_id">
и reset форму. С помощью jQuery вы можете сделать $('#form_id')[0].reset();
, а в JavaScript вы можете сделать document.getElementById('form_id').reset()
.
Следующий код работал у меня с jQuery. Он работает в каждом браузере и позволяет сохранять события и настраиваемые свойства.
var $el = $(fileInputElement);
$el.wrap('<form>').closest('form').get(0).reset();
$el.unwrap();
Смотрите этот jsFiddle для кода и демонстрации.
Решение Cross-Browser от @Gyrocode.com в ваниле JS:
var clearFileInput = function (input) {
if (!input) {
return;
}
// standard way - works for IE 11+, Chrome, Firefox, webkit Opera
input.value = null;
if (input.files && input.files.length && input.parentNode) {
// workaround for IE 10 and lower, pre-webkit Opera
var form = document.createElement('form');
input.parentNode.insertBefore(form, input);
form.appendChild(input);
form.reset();
form.parentNode.insertBefore(input, form);
input.parentNode.removeChild(form);
}
}
С IE 10 Я решил проблему с помощью
var file = document.getElementById("file-input");
file.removeAttribute('value');
file.parentNode.replaceChild(file.cloneNode(true),file);
где:
<input accept="image/*" onchange="angular.element(this).scope().uploadFile(this)" id="file-input" type="file"/>