Saya ingin menghapus input file dalam formulir saya.
Saya tahu tentang pengaturan sumber ke metode yang sama ... Tapi metode itu tidak akan menghapus jalur file yang dipilih.
Catatan : Saya ingin menghindari memuat ulang halaman, mengatur ulang formulir atau melakukan panggilan AJAX.
Apakah ini mungkin?
javascript
html
thomaux
sumber
sumber
Ada 3 cara untuk menghapus input file dengan javascript:
atur nilai properti menjadi kosong atau nol.
Berfungsi untuk IE11 + dan browser modern lainnya.
Buat elemen input file baru dan ganti yang lama.
Kerugiannya adalah Anda akan kehilangan pendengar acara dan properti ekspansi.
Setel ulang formulir pemilik melalui metode form.reset ().
Untuk menghindari memengaruhi elemen input lain dalam formulir pemilik yang sama, kami dapat membuat formulir kosong baru dan menambahkan elemen input file ke formulir baru ini dan mengatur ulangnya. Cara ini berfungsi untuk semua browser.
Saya menulis fungsi javascript. demo: http://jsbin.com/muhipoye/1/
sumber
tl; dr : Untuk peramban modern, cukup gunakan
Jawaban lama:
Bagaimana tentang:
Saya masih harus mengerti mengapa ini tidak bekerja dengan webkit .
Bagaimanapun, ini bekerja dengan IE9>, Firefox dan Opera.
Situasi dengan webkit adalah saya sepertinya tidak dapat mengubahnya kembali ke file.
Dengan IE8, situasinya melempar pengecualian keamanan.
Sunting: Untuk webkit, Opera dan firefox ini berfungsi, meskipun:
(periksa jawaban di atas dengan proposal ini)
Saya akan melihat apakah saya dapat menemukan cara bersih yang lebih baik untuk melakukan cross-browser ini tanpa memerlukan GC.
Sunting2:
Bekerja dengan sebagian besar browser. Tidak bekerja dengan IE <9, itu saja.
Diuji pada firefox 20, chrome 24, opera 12, IE7, IE8, IE9, dan IE10.
sumber
Mengatur nilai agar
''
tidak berfungsi di semua browser.Alih-alih mencoba mengatur nilai agar
null
suka:EDIT: Saya mendapatkan alasan keamanan yang sangat valid untuk tidak mengizinkan JS untuk mengatur input file, namun tampaknya masuk akal untuk menyediakan mekanisme sederhana untuk membersihkan sudah memilih output. Saya mencoba menggunakan string kosong tetapi tidak berfungsi di semua browser,
NULL
berfungsi di semua browser yang saya coba (Opera, Chrome, FF, IE11 + dan Safari).Sunting: Harap dicatat bahwa pengaturan untuk
NULL
bekerja pada semua browser sementara pengaturan ke string kosong tidak.sumber
all browsers
... itu tidak berfungsi di IE8, IE9 atau IE10 (tetapi bekerja di IE11).Sayangnya tidak ada jawaban di atas yang muncul untuk mencakup semua basis - setidaknya tidak dengan pengujian saya dengan javascript vanilla.
.value = null
tampaknya berfungsi pada FireFox, Chome, Opera dan IE11 (tetapi tidak IE8 / 9/10).cloneNode
(dan.clone()
di jQuery) di FireFox tampaknya menyalin.value
, sehingga membuat klon itu sia-sia.Jadi di sini adalah fungsi javascript vanilla yang saya tulis yang berfungsi pada FireFox (27 dan 28), Chrome (33), IE (8, 9, 10, 11), Opera (17) ... ini adalah satu-satunya browser yang saat ini tersedia bagi saya untuk menguji.
The
ctrl
parameter input file itu sendiri, sehingga fungsi akan disebut sebagai ...sumber
if
pernyataan itu diletakkan di dalamcatch
blok?null
. Pikiran untuk menjelaskan apa gunanya menempatkanctrl.value = null;
di dalamtry...catch
blok itu? Maaf untuk pertanyaan newb.ctrl.parentNode.replaceChild(ctrl.cloneNode(true), ctrl);
- pada titik mana sebenarnya kita menghapus nilainya, karenacloneNode
juga menyalinnya?LARUTAN
Kode berikut ini berfungsi untuk saya dengan jQuery. Ini berfungsi di setiap browser dan memungkinkan untuk melestarikan acara dan properti khusus.
DEMO
Lihat jsFiddle ini untuk kode dan demonstrasi.
LINK
Menghapus <input type = 'file' /> menggunakan jQuery
Cara mengatur ulang input file dengan JavaScript
sumber
Anda perlu menggantinya dengan input file baru. Inilah cara melakukannya dengan jQuery:
dan gunakan baris ini ketika Anda perlu menghapus kolom input (pada beberapa acara misalnya):
sumber
Sunting:
Yang ini tidak berfungsi di IE dan opera, tetapi tampaknya bekerja untuk firefox, safari dan chrome.
sumber
Saya mengalami masalah yang sama dan saya menemukan ini.
sumber
Itu sebenarnya cukup mudah.
sumber
Saya telah mencari cara sederhana dan bersih untuk menghapus input file HTML, jawaban di atas sangat bagus, tetapi tidak ada yang benar-benar menjawab apa yang saya cari, sampai saya menemukan di web dengan sederhana cara elegan untuk melakukannya:
semua kredit diberikan kepada Chris Coyier .
sumber
Jawaban di atas menawarkan solusi yang agak canggung karena alasan berikut:
Saya tidak suka harus
wrap
yanginput
pertama dan kemudian mendapatkan html, sangat terlibat dan kotor.Cross browser JS sangat berguna dan tampaknya dalam hal ini ada terlalu banyak yang tidak diketahui untuk menggunakan
type
switching (yang, sekali lagi, agak kotor) dan mengaturvalue
ke''
Jadi saya menawarkan solusi berbasis jQuery saya:
Itu melakukan apa yang dikatakannya, itu menggantikan input dengan klon itu sendiri. Klon tidak akan memiliki file yang dipilih.
Keuntungan:
Hasil: Selamat programmer
sumber
Cross browser compatibility
... pengujian saya menunjukkan bahwa FireFox menyalin.value
sebagai bagian dari.clone()
, karenanya menjadikannya tidak bergunareplaceWith
? Saya menggunakanclone()
diri saya dan berfungsi dengan baik di firefox (saya tidak tahu apakah ini masih berlaku untuk Anda setahun kemudian =))Berikut adalah dua sen saya, file input disimpan sebagai array jadi di sini adalah bagaimana cara membatalkannya
ini mengembalikan array kosong dan berfungsi di semua browser
sumber
Apa yang membantu saya adalah, saya mencoba mengambil dan mengunggah file yang dipilih terakhir menggunakan loop, daripada membersihkan antrian, dan itu berhasil. Ini kodenya.
Semoga ini bisa membantu.
sumber
Saya mencoba sebagian besar solusi tetapi tampaknya tidak ada yang berhasil. Namun saya menemukan jalan-jalan untuk itu di bawah ini.
Struktur formulir adalah:
form
=>label
,input
dansubmit button
. Setelah kami memilih file, nama file akan ditampilkan oleh label dengan melakukannya secara manual di JavaScript.Jadi strategi saya adalah: awalnya kiriman
button
dinonaktifkan, setelah file dipilih,disabled
atribut tombol kirim akan dihapus sehingga saya bisa mengirimkan file. Setelah saya kirim, saya menghapuslabel
yang membuatnya tampak seperti saya menghapus fileinput
tetapi sebenarnya tidak. Kemudian saya akan menonaktifkan tombol kirim lagi untuk mencegah mengirimkan formulir.Dengan mengatur
button
disable
pengiriman atau tidak, saya menghentikan file dari pengiriman berkali-kali kecuali saya memilih file lain.sumber
Saya mengubah untuk mengetik teks dan kembali ke mengetik ke file menggunakan setAttribute
sumber
yang
input.value = null
merupakan metode kerja, namun hanya akan memicu masukan inichange
acara jika dipanggil darionclick
acara.Solusi untuk itu adalah memanggil
onchange
handler itu secara manual setiap kali Anda perlu mengatur ulang input.sumber