Jak wyczyścić dane wejściowe pliku


86

Poniżej znajduje się część kodu jquery, który mam, który wyświetla dane wejściowe pliku i przycisk „Wyczyść plik”.

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

Powodem, dla którego mam przycisk "Wyczyść plik" jest to, że jeśli go klikniesz, wyczyści wszystko, co jest w pliku wejściowym. Jak go zakodować, aby faktycznie wyczyścił dane wejściowe pliku po kliknięciu przycisku „Wyczyść plik”?



Odpowiedzi:


161

To powinno działać:

$imageClear.on('click', function() { 
    $imageFile.val(''); 
});

1
Tak, jest to stosunkowo prosty kod jQuery. Jest to rozwiązanie dla różnych przeglądarek.
Guillaume Poussel

3
Chłopaki, <input type=file />jest readonlypo wybraniu pliku w> = IE8 , ze względów bezpieczeństwa, tutaj jest podobny Q i korespondent A. dla proponowanego tutaj rozwiązania.
Paul T. Rawkeen

1
<input type=file />typ danych to plik, nie możemy ich wyczyścić, przekazując pusty ciąg do pola wejściowego.
Usman Mughal

Pracuje też w Chrome. Warto to zobaczyć stackoverflow.com/a/11953476/1830909 i mojego komentarza poniżej.
QMaster

1
Jak mogę usunąć plik z przesłania wielu plików w pliku wejściowym za pomocą jQuery?
zawsze uczący się

42

Wyczyść dane wejściowe pliku za pomocą jQuery

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

Wyczyść dane wejściowe za pomocą JavaScript

document.getElementById("fileInputId").value = null;

7

Jest to metoda, której również lubię używać, ale uważam, że musisz dodać parametr bool true do metody clone, aby wszelkie zdarzenia pozostały dołączone do nowego obiektu i musisz wyczyścić zawartość.

    var input = $("#fileInput");

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

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



3

dla użytkowników React

e.target.value = ""

Ale jeśli element wejściowy pliku jest wyzwalany przez inny element (z rozszerzeniem htmlFor atrybutem) - będzie to oznaczać, że nie masz zdarzenia

Możesz więc użyć ref:

na początku funkcji:

const inputRef = React.useRef();

na elemencie wejściowym

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

a następnie w funkcji onClick (na przykład) u może pisać

inputRef.current.value = "" 
  • w klasach React - ten sam pomysł, ale różnica w konstruktorze: this.inputRef = React.createRef()

1

Innym rozwiązaniem, jeśli chcesz mieć pewność, że jest to możliwe w różnych przeglądarkach, jest usunięcie () tagu, a następnie dołączenie () lub poprzedzenie () lub w inny sposób ponowne dodanie nowego wystąpienia tagu wejściowego z tymi samymi atrybutami .

<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

W moim przypadku inne rozwiązania nie zadziałały niż ten:

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

Jeśli jednak na stronie będzie więcej niż 1 plik wejściowy, tekst wszystkich z nich zostanie zresetowany.


0

get input id i put val jest puste, jak poniżej: Uwaga: Nie umieszczaj spacji między val pustymi podwójnymi cudzysłowami val ("").

 $('#imageFileId').val("")

0

ten kod działa dla wszystkich przeglądarek i wszystkich wejść.

$('#your_target_input').attr('value', '');

Polecam używać jak:$(document).ready(function( {$('#your_target_input').attr('value', ''); } );
reza laki
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.