Saya ingin membuat acara klik diaktifkan pada <input type="file">
tag secara terprogram.
Memanggil klik saja () tampaknya tidak melakukan apa-apa atau setidaknya tidak memunculkan dialog pemilihan file.
Saya telah bereksperimen dengan menangkap acara menggunakan pendengar dan mengarahkan kembali acara tersebut, tetapi saya belum bisa mendapatkannya untuk benar-benar melakukan acara seperti seseorang mengkliknya.
javascript
html
pengguna28655
sumber
sumber
Jawaban:
Anda tidak dapat melakukan itu di semua browser, seharusnya IE melakukannya mengizinkannya, tetapi Mozilla dan Opera mengizinkannya.
Ketika Anda menulis pesan di GMail, fitur 'lampirkan file' diterapkan satu cara untuk IE dan browser apa pun yang mendukung ini, dan kemudian diimplementasikan cara lain untuk Firefox dan browser yang tidak.
Saya tidak tahu mengapa Anda tidak bisa melakukannya, tetapi satu hal yang merupakan risiko keamanan, dan yang tidak boleh Anda lakukan di browser apa pun, adalah secara terprogram mengatur nama file pada elemen File HTML.
sumber
input
elemen file terlihat. Memicuclick
metode ini berfungsi, termasuk di konsol, jika elemen dapat dilihat.Saya telah mencari solusi sepanjang hari ini. Dan ini adalah kesimpulan yang saya buat:
Semoga ini membantu! :)
sumber
Anda dapat mem-klik () pada browser apa saja tetapi beberapa browser membutuhkan elemen untuk terlihat dan fokus. Inilah contoh jQuery:
Ia bekerja dengan hide sebelum
click()
tetapi saya tidak tahu apakah itu berfungsi tanpa memanggil metode show. Belum pernah mencoba ini di Opera, saya diuji pada IE / FF / Safari / Chrome dan berhasil. Saya harap ini akan membantu.sumber
$(...).show().focus().click().hide();
:)INI MUNGKIN: Di bawah FF4 +, Opera?, Chrome: tetapi:
inputElement.click()
harus dipanggil dari konteks aksi pengguna! (bukan konteks eksekusi skrip)<input type="file" />
harus terlihat (inputElement.style.display !== 'none'
) (Anda dapat menyembunyikannya dengan visibilitas atau sesuatu yang lain, tetapi bukan properti "display")sumber
onclick
atribut alih-alih mengikat ke acara.inputElement.click()
dari dalam peristiwa keydown (pintas untuk melampirkan file) berfungsi, tetapi memanggilnya dalam batas waktu atau panggilan balik ajax TIDAK. Terpilih.this
. : /Bagi mereka yang mengerti bahwa Anda harus menampar formulir yang tidak terlihat di atas tautan, tetapi terlalu malas untuk menulis, saya menulisnya untuk Anda. Ya, bagi saya, tetapi mungkin juga berbagi. Komentar diterima.
HTML (Di Suatu Tempat):
HTML (Di tempat yang tidak Anda pedulikan):
JavaScript:
sumber
Coba solusi ini: http://code.google.com/p/upload-at-click/
sumber
cukup gunakan label tag, dengan cara itu Anda bisa menyembunyikan input, dan membuatnya bekerja melalui label terkait https://developer.mozilla.org/fr/docs/Web/HTML/Element/Label
sumber
Jika Anda ingin
click
metode ini berfungsi di Chrome, Firefox, dll, terapkan gaya berikut ke file input Anda. Ini akan disembunyikan dengan sempurna, seperti Anda melakukandisplay: none;
Sesederhana itu, saya mengujinya berfungsi!
sumber
height
danwidth
ke0
?Bekerja untuk saya ketika saya mengalami masalah yang sama, itu adalah eRube Goldberg biasa.
sumber
Izinkan saya menambahkan ke posting lama ini, solusi yang saya gunakan untuk bekerja yang mungkin bekerja di mungkin 80% atau lebih dari semua browser baik baru maupun lama.
Solusinya kompleks namun sederhana. Langkah pertama adalah menggunakan CSS dan menyamarkan tipe file input dengan "elemen-bawah" yang muncul karena memiliki opacity 0. Langkah selanjutnya adalah menggunakan JavaScript untuk memperbarui labelnya sesuai kebutuhan.
Contoh jsFiddle yang berfungsi
sumber
Berhasil :
Untuk alasan keamanan pada Firefox dan Opera, Anda tidak dapat memecat klik pada input file, tetapi Anda dapat mensimulasikan dengan MouseEvents:
sumber
createEvent()
daninitMouseEvent()
sekarang sudah usang.Saya tahu ini sudah lama, dan semua solusi ini adalah peretasan di sekitar tindakan pencegahan keamanan browser dengan nilai nyata.
Yang mengatakan, pada hari ini, fileInput.click () berfungsi di Chrome saat ini (36.0.1985.125 m) dan Firefox ESR saat ini (24.7.0), tetapi tidak di IE saat ini (11.0.9600.17207). Overlay bidang file dengan opacity 0 di atas tombol berfungsi, tapi saya ingin elemen tautan sebagai pemicu yang terlihat, dan melayang menggarisbawahi tidak cukup berfungsi di browser apa pun. Ini menyala kemudian menghilang, mungkin browser memikirkan apakah hover styling benar-benar berlaku atau tidak.
Tapi saya memang menemukan solusi yang berfungsi di semua browser itu. Saya tidak akan mengklaim telah menguji setiap versi setiap browser, atau saya tahu itu akan terus bekerja selamanya, tetapi tampaknya memenuhi kebutuhan saya sekarang.
Sederhana saja: Posisikan field input file di luar layar (position: absolute; top: -5000px), letakkan elemen label di sekitarnya, dan memicu klik pada label, alih-alih bidang file itu sendiri.
Perhatikan bahwa tautan memang perlu ditulis untuk memanggil metode klik label, itu tidak melakukannya secara otomatis, seperti ketika Anda mengklik teks di dalam elemen label. Tampaknya elemen tautan menangkap klik, dan itu tidak sampai ke label.
Perhatikan juga bahwa ini tidak memberikan cara untuk menampilkan file yang dipilih saat ini, karena bidangnya tidak aktif. Saya ingin mengirimkan segera ketika file dipilih, jadi itu bukan masalah bagi saya, tetapi Anda akan memerlukan pendekatan yang agak berbeda jika situasinya berbeda.
sumber
JS Fiddle: http://jsfiddle.net/eyedean/1bw357kw/
sumber
Kode ini berfungsi untuk saya. Apakah ini yang ingin Anda lakukan?
sumber
Solusi saya untuk Safari dengan jQuery dan jQuery-ui:
sumber
Berikut ini adalah solusi JavaScript murni untuk masalah ini. Berfungsi dengan baik di semua browser
sumber
Ada beberapa cara untuk mengarahkan kembali acara ke kontrol tetapi jangan berharap dapat dengan mudah memecat acara ke kontrol api sendiri karena browser akan mencoba untuk memblokir itu untuk alasan keamanan (baik).
Jika Anda hanya perlu dialog file untuk muncul ketika pengguna mengklik sesuatu, katakanlah karena Anda ingin tombol unggah file yang terlihat lebih baik, maka Anda mungkin ingin melihat apa yang muncul dengan Shaun Inman .
Saya dapat mencapai pemicu keyboard dengan pengalihan kreatif fokus dan keluar dari kontrol antara peristiwa keydown, penekanan tombol & keyup. YMMV.
Saran tulus saya adalah membiarkan ini sendirian, karena ini adalah dunia browser-ketidakcocokan-sakit. Pembaruan peramban minor juga dapat memblokir trik tanpa peringatan dan Anda mungkin harus terus menciptakan kembali peretasan untuk membuatnya berfungsi.
sumber
Saya sedang meneliti ini beberapa waktu yang lalu karena saya ingin membuat tombol khusus yang akan membuka dialog file dan segera mulai mengunggah. Saya baru saja memperhatikan sesuatu yang mungkin memungkinkan - firefox tampaknya membuka dialog ketika Anda mengklik di mana saja pada unggahan. Jadi yang berikut mungkin melakukannya:
Ini hanya teoretis karena saya sudah menggunakan metode lain untuk menyelesaikan masalah tetapi mungkin saja berhasil.
sumber
Saya memiliki
<input type="button">
tag yang tersembunyi dari pandangan. Apa yang saya lakukan adalah melampirkan"onClick"
acara tersebut ke komponen apa pun yang terlihat dari jenis apa pun seperti label. Ini dilakukan dengan menggunakan Alat Pengembang Google Chrome atau Firebug Mozilla Firefox menggunakan klik kanan perintah "edit HTML". Dalam acara ini tentukan skrip berikut atau yang serupa:Jika Anda memiliki JQuery:
jika tidak:
Terima kasih.
sumber
Hai solusi ini berhasil. untuk mengunduh kita harus menggunakan MSBLOB
Untuk AngularJS atau bahkan untuk javascript biasa.
sumber
Ini sekarang akan dimungkinkan di Firefox 4, dengan peringatan bahwa itu dianggap sebagai jendela pop-up dan karena itu akan diblokir setiap kali jendela pop-up muncul.
sumber
Inilah solusi yang cocok untuk saya: CSS:
HTML dengan bantuan JQuery "kecil":
Pastikan maskfied dilindungi dengan benar oleh bidang unggahan yang sebenarnya.
sumber
Anda dapat melakukan ini sesuai jawaban dari kotak Buka File Dialog pada tag <a>
sumber
Saya menemukan bahwa jika input (file) berada di luar formulir, maka mem-klik event memanggil dialog file.
sumber
Semoga ini bisa membantu seseorang - saya menghabiskan 2 jam untuk membenturkan kepala:
Di IE8 atau IE9, jika Anda memicu membuka input file dengan javascript dengan cara apa pun (percayalah, saya sudah mencoba semuanya), itu tidak akan membiarkan Anda mengirimkan formulir menggunakan javascript, itu hanya akan gagal diam-diam.
Mengirimkan formulir melalui tombol kirim biasa dapat berfungsi tetapi memanggil form.submit (); diam-diam akan gagal.
Saya harus menggunakan overlay tombol pilih file saya dengan input file transparan yang berfungsi.
sumber
Ini bekerja untuk saya:
sumber
bukan tidak mungkin:
Tapi entah bagaimana itu hanya berfungsi jika ini dalam fungsi yang dipanggil melalui event klik.
Jadi, Anda mungkin memiliki pengaturan berikut:
html:
JavaScript:
sumber
createEvent()
daninitMouseEvent()
yang ditinggalkan. Anda harus menggunakanCustomEvent()
sekarang ...Kamu bisa memakai
sumber