Saya membutuhkan solusi untuk menampilkan dialog file terbuka dalam HTML sambil mengklik file div
. Kotak dialog file yang terbuka harus terbuka saat div
diklik.
Saya tidak ingin menampilkan kotak file input sebagai bagian dari halaman HTML. Ini harus ditampilkan dalam dialog terpisah, yang bukan merupakan bagian dari halaman web.
javascript
file
dialog
Tabut
sumber
sumber
Jawaban:
Ini yang bagus
Demo Pengunggah yang Baik
Itu adalah
<input type='file' />
kendali itu sendiri. Tapi div ditempatkan di atasnya dan gaya css diterapkan untuk mendapatkan kesan itu. Opacity dari kontrol file diatur ke 0 sehingga muncul jendela dialog terbuka saat mengklik div.sumber
untuk IE tambahkan ini:
sumber
document.getElementById("logo").click()
sudah cukup. Mereka juga menunjukkan cara lain "Seret & Jatuhkan". developer.mozilla.org/en-US/docs/Web/API/File/…Saya tidak tahu mengapa tidak ada yang menunjukkan hal ini tetapi inilah cara melakukannya tanpa Javascript dan juga kompatibel dengan browser apa pun.
EDIT: Di Safari,
input
dinonaktifkan saat disembunyikan dengandisplay: none
. Pendekatan yang lebih baik akan digunakanposition: fixed; top: -100em
.Jika Anda lebih suka Anda bisa pergi "cara yang benar" dengan menggunakan
for
dalamlabel
menunjuk keid
masukan seperti ini:sumber
<input>
tag harus memilikiname
atribut; 2. jikafor
atribut ditentukan,<input>
tag file akan membutuhkanid
.Simplicity is the ultimate sophistication
display: none
dinonaktifkan. Solusinya adalah menggunakan pendekatan berbeda untuk menyembunyikan input. Saya akan memperbarui jawaban untuk mencerminkan itu.Sebenarnya, Anda tidak membutuhkan semua itu dengan opacity, visibility,
<input>
styling, dll. Lihat saja:Demo di jsFiddle . Diuji di Chrome 30.0 dan Firefox 24.0. Namun tidak berfungsi di Opera 12.16.
sumber
Inilah yang paling berhasil untuk saya (Diuji di IE8, FF, Chrome, Safari).
Penjelasan: Saya memposisikan input file tepat di atas elemen yang akan diklik, sehingga klik apa pun akan mendarat di atasnya atau labelnya (yang menarik dialog unggah seperti jika Anda mengklik label itu sendiri). Saya memiliki beberapa masalah dengan bagian tombol dari masukan default yang mencuat dari sisi label, jadi
overflow: hidden
masukan dandisplay: inline-block
label diperlukan.sumber
Bagaimana jika javascript Dimatikan di mesin klien? Gunakan solusi berikut untuk semua skenario. Anda bahkan tidak membutuhkan javascript / jQuery. :
HTML
CSS
Penjelasan:
for="Your input Id"
. Memicu peristiwa klik secara default oleh HTML. Jadi secara default memicu event klik, tidak perlu jQuery / javascript. Jika hanya dilakukan dengan HTML mengapa menggunakan jQuery / jScript? Dan Anda tidak tahu apakah klien menonaktifkan JS. Fitur Anda harus berfungsi meskipun JS dimatikan.Bekerja jsFiddle (Anda tidak perlu JS, jquery)
sumber
Pertama tambahkan tag head :
jika Anda sudah memiliki tag script , tambahkan saja fungsi-fungsi di atas.
Di tubuh atau tag formulir Anda menambahkan:
Tidak peduli di mana di html Anda, sama seperti Anda telah membuat instance baru dari tipe kelas OpenFileDialog sebagai variabel global , yang namanya adalah id elemen, tidak peduli di mana dalam kode atau xaml Anda, tetapi di skrip atau kode Anda , Anda tidak bisa mengetik namanya, lalu membaca properti atau memanggil fungsi, karena ada fungsi global yang melakukan hal-hal yang tidak ditentukan dalam elemen input type = "file". Anda hanya perlu memberi fungsi ini id dari hidden input type = "file" yang merupakan nama dari instance OpenFileDialog sebagai string.
Untuk memudahkan hidup Anda dalam membuat instance dialog file terbuka ke html Anda, Anda dapat membuat fungsi yang melakukannya:
dan jika Anda ingin menghapus dialog file terbuka, Anda dapat membuat dan menggunakan fungsi berikut:
tetapi sebelum Anda menghapus dialog file terbuka, pastikan dialog itu ada dengan membuat dan menggunakan fungsi berikut:
dan jika Anda tidak ingin membuat dan menambahkan dialog file terbuka di badan atau tag formulir di html, karena ini menambahkan input tersembunyi type = "file" s, maka Anda dapat melakukannya di skrip menggunakan fungsi buat di atas :
Pastikan bahwa di dekat tubuh atau tag formulir Anda, Anda menambahkan:
Anda tidak perlu melakukan baris di atas ini, jika Anda sudah melakukannya.
TIPS: Anda dapat menambahkan File JScript baru ke proyek atau situs web Anda, jika Anda belum memilikinya, dan dalam file ini Anda dapat meletakkan semua fungsi dialog file terbuka dari tag skrip dan html atau halaman formulir web, dan gunakan mereka di html atau halaman formulir web dari file JScript ini, tapi jangan lupa sebelumnya untuk menghubungkan html atau halaman formulir web ke File JScript tentunya. Anda dapat melakukannya hanya dengan menyeret file JScript ke halaman html Anda di headtag. Jika halaman Anda berbentuk web dan bukan html sederhana, dan Anda tidak memiliki tag kepala, letakkan di mana saja agar dapat berfungsi. Jangan lupa untuk mendefinisikan variabel global dalam File JScript, yang nilainya akan menjadi body atau id formulir Anda sebagai string. Setelah Anda menautkan file JScript ke html atau halaman formulir web, Anda dapat memuat acara dari tubuh formulir Anda, mengatur nilai variabel itu ke badan atau id formulir Anda. Kemudian di File JScript, Anda tidak perlu memberikan ke dokumen id badan atau formulir satu halaman lagi, cukup berikan nilai variabel itu. Anda dapat memanggil variabel bodyId atau formId atau bodyOrFormId atau nama lain yang Anda inginkan.
Semoga beruntung kawan!
sumber
Cara termudah:
Yang penting, penggunaan
display: none
memastikan bahwa tidak ada tempat yang akan ditempati oleh input file tersembunyi (apa yang terjadi dengan menggunakanopacity: 0
).sumber
AFAIK Anda masih membutuhkan
<input type="file">
elemen, lalu Anda dapat menggunakan beberapa barang dari quirksmode untuk menatanyasumber
Satu-satunya cara tanpanya
<input type="file">
adalah dengan menyematkan film flash transparan di atas div. Anda kemudian dapat menggunakan peristiwa klik yang dibuat pengguna (sesuai dengan aturan keamanan baru Flash 10) untuk memicu panggilan ke FileReference.browse flash .Ini menawarkan ketergantungan tambahan melalui cara quirksmode tetapi sebagai imbalannya Anda mendapatkan lebih banyak acara (seperti acara progres bawaan).
sumber
Dapat digunakan
sumber