Как очистить ввод файла

87

Ниже приведена часть имеющегося у меня кода jquery, который отображает ввод файла и кнопку «Очистить файл».

var $imagefile = $('<input />').attr({
    type: 'file',
    name: 'imageFile',
    class: 'imageFile'
});

$image.append($imagefile);

var $imageclear = $('<input />').attr({
    type: 'button',
    name: 'imageClear',
    class: 'imageClear',
    value: 'Clear File'
});

$image.append($imageclear);

Теперь причина, по которой у меня есть кнопка «Очистить файл», заключается в том, что если вы нажмете на кнопку, она очистит все, что находится во входном файле. Как мне его закодировать, чтобы он действительно очищал ввод файла, когда я нажимаю кнопку «Очистить файл»?

user1181690
источник
См. Это: stackoverflow.com/questions/1043957/…
Судхир Бастакоти 08

Ответы:

161

Это должно работать:

$imageClear.on('click', function() { 
    $imageFile.val(''); 
});
Гийом Пуссель
источник
1
Да, это относительно простой код jQuery. Это кросс-браузерное решение.
Guillaume Poussel 08
3
Ребята, <input type=file />это readonlyпосле выбора файла в> = IE8 , по соображениям безопасности, здесь подобный Q и корреспондент для решения , предложенного здесь.
Пол Т. Роукин, 01
1
<input type=file />тип данных - файл, мы не можем очистить его, передав пустую строку в поле ввода.
Усман Могол
Тоже работаю над Chrome. Это может быть полезно для просмотра этого stackoverflow.com/a/11953476/1830909 и моего комментария под ним.
QMaster 07
1
Как я могу удалить файл при загрузке нескольких файлов при вводе файла с помощью jquery?
всегда учащийся
42

Очистить ввод файла с помощью jQuery

$("#fileInputId").val(null);

Очистить ввод файла с помощью JavaScript

document.getElementById("fileInputId").value = null;
Арвин Джаянаке
источник
7

Мне тоже нравится этот метод, но я считаю, что вам нужно добавить параметр bool true в метод clone, чтобы любые события оставались привязанными к новому объекту, и вам нужно очистить содержимое.

    var input = $("#fileInput");

    function clearInput() {
        input = input.val('').clone(true);
    };

https://api.jquery.com/clone/

медитари
источник
4

По настройке $("ID").val(null)работал у меня

Пранав Кульшрестха
источник
3

для пользователей React

e.target.value = ""

Но если элемент ввода файла запускается другим элементом (с htmlForатрибутом) - это будет означать, что у вас нет события

Итак, вы можете использовать ссылку:

в начале функции:

const inputRef = React.useRef();

на элементе ввода

<input type="file" ref={inputRef} />

а затем в функции onClick (например) вы можете написать

inputRef.current.value = "" 
  • в React Classes - та же идея, но разница в конструкторе: this.inputRef = React.createRef()
Шани Кехати
источник
1

Другое решение, если вы хотите быть уверенным, что это кроссбраузерно, - это удалить () тег, а затем добавить () или prepend () или каким-то другим способом повторно добавить новый экземпляр входного тега с теми же атрибутами. .

<form method="POST" enctype="multipart/form-data">
<label for="fileinput">
 <input type="file" name="fileinput" id="fileinput" />
</label>
</form>

$("#fileinput").remove();
$("<input>")
  .attr({
    type: 'file',
    id: 'fileinput',
    name: 'fileinput'
    })
  .appendTo($("label[for='fileinput']"));
Iceman
источник
0

Это работает

 $("#yourINPUTfile").val("");
Charnichart
источник
0

Я сделал что-то подобное, и у меня это работает

$('#fileInput').val(null); 
Никундж К.
источник
0

В моем случае другие решения не сработали, кроме этого:

$('.bootstrap-filestyle :input').val('');

Однако, если на странице будет введено более одного файла, текст будет сброшен для всех из них.

Петр Сагалара
источник
0

получить входной идентификатор и поставить val пусто, как показано ниже: Примечание: не помещайте пробел между val пустыми двойными кавычками val ("").

 $('#imageFileId').val("")
Нагнат Мунгаде
источник
0

этот код работает для всех браузеров и всех входов.

$('#your_target_input').attr('value', '');
Реза Лаки
источник
Я рекомендую вам использовать как:$(document).ready(function( {$('#your_target_input').attr('value', ''); } );
reza laki