Dosya Girişi nasıl temizlenir


87

Aşağıda, dosya girişini ve bir "Dosyayı Temizle" düğmesini görüntüleyen jquery kodumun bir parçası bulunmaktadır.

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

Şimdi "Dosyayı Temizle" düğmesine sahip olmamın nedeni, düğmeye tıklarsanız, dosya girişindeki her şeyi temizleyecektir. "Dosyayı Temizle" düğmesini tıkladığımda dosya girişini gerçekten temizleyecek şekilde nasıl kodlayabilirim?



Yanıtlar:


161

Bu çalışmalı:

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

1
Evet, nispeten basit bir jQuery kodudur. Tarayıcılar arası bir çözümdür.
Guillaume Poussel

3
Çocuklar, <input type=file />bir readonly> = dosyayı seçtikten sonra IE8 , güvenlik nedeniyle, burada benzer Q ve muhabir A Burada önerilen çözüm.
Paul T. Rawkeen

1
<input type=file />veri türü dosyadır, giriş alanına boş dizge geçerek onu temizleyemeyiz.
Usman Mughal

Chrome'da da çalışıyor. Bu stackoverflow.com/a/11953476/1830909 ve onun altındaki yorumumu görmek faydalı olabilir .
QMaster

1
Jquery kullanarak dosya girişinde birden çok dosya yüklemesindeki dosyayı nasıl kaldırabilirim?
her zaman-öğrenen

42

JQuery ile dosya girişini temizleyin

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

Dosya girişini JavaScript ile temizle

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

7

Benim de kullanmayı sevdiğim yöntem budur ancak herhangi bir olayın yeni nesneye bağlı kalması için bool true parametresini klon yöntemine eklemeniz gerektiğine ve içeriği temizlemeniz gerektiğine inanıyorum.

    var input = $("#fileInput");

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

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



3

React kullanıcıları için

e.target.value = ""

Ancak, dosya giriş öğesi farklı bir öğe tarafından tetiklenirse (bir htmlForözniteliğe sahip) - bu, etkinliğin olmadığı anlamına gelir

Yani bir ref kullanabilirsiniz:

func başlangıcında:

const inputRef = React.useRef();

giriş öğesinde

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

ve sonra bir onClick işlevinde (örneğin) yazabilirsiniz

inputRef.current.value = "" 
  • React Sınıflarında - aynı fikir, ancak yapıcıdaki farklılık: this.inputRef = React.createRef()

1

Bunun tarayıcılar arası yetenekli olduğundan emin olmak istiyorsanız başka bir çözüm, etiketi kaldırmak () ve ardından eklemek () veya başa eklemek () veya başka bir şekilde aynı niteliklere sahip yeni bir girdi etiketi örneğini yeniden eklemektir. .

<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

Böyle bir şey yaptım ve bu benim için çalışıyor

$('#fileInput').val(null); 

0

Benim durumumda başka çözümler bu şekilde işe yaramadı:

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

Bununla birlikte, sayfada 1'den fazla dosya girişiniz olacaksa, hepsi üzerindeki metni sıfırlayacaktır.


0

get input id ve put val aşağıdaki gibi boştur: Not: val boş çift tırnak val ("") arasına boşluk koymayın.

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

0

bu kod tüm tarayıcılar ve tüm girişler için çalışır.

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

Şöyle kullanmanızı tavsiye ederim:$(document).ready(function( {$('#your_target_input').attr('value', ''); } );
reza laki
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.