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


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);

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



Ответы:


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/



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']"));



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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.