Як очистити введення файлів


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. Це крос-браузерне рішення.
Гійом Пуссель

3
Хлопці, <input type=file />це readonlyпісля вибору файлу в> = IE8 , з міркувань безпеки, ось подібний Q та кореспондент A для запропонованого тут рішення.
Paul T. Rawkeen

1
<input type=file />тип даних - файл, ми не можемо очистити його, передавши порожній рядок у поле введення.
Усман Могол

Працюємо і над Chrome. Це може бути корисно побачити цей stackoverflow.com/a/11953476/1830909 та мій коментар нижче цього.
QMaster

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 (наприклад) u може писати

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

Однак, якщо у вас буде більше 1 файлу на сторінці, це скине текст на всіх них.


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.