Apakah ada cara untuk menata <input type=file />
elemen (atau skrip) agar hanya ada tombol "Browse" tanpa bidang teks?
Terima kasih
Sunting : Hanya untuk menjelaskan mengapa saya membutuhkan ini. Saya menggunakan kode unggah multi file dari http://www.morningz.com/?p=5 dan tidak perlu bidang teks masukan karena tidak pernah memiliki nilai. Script baru saja menambahkan file yang dipilih ke koleksi di halaman. Akan terlihat jauh lebih baik tanpa bidang teks, jika memungkinkan.
javascript
html
css
Andrija
sumber
sumber
Saya sedang bersenang-senang mencoba untuk mencapai ini. Saya tidak ingin menggunakan solusi Flash, dan tidak ada perpustakaan jQuery yang saya lihat dapat diandalkan di semua browser.
Saya datang dengan solusi saya sendiri, yang diimplementasikan sepenuhnya dalam CSS (kecuali untuk perubahan gaya onclick untuk membuat tombol muncul 'diklik').
Anda dapat mencoba contoh yang berfungsi di sini: http://jsfiddle.net/VQJ9V/307/ (Diuji dalam FF 7, IE 9, Safari 5, Opera 11 dan Chrome 14)
Ini bekerja dengan membuat input file besar (dengan ukuran font: 50px), kemudian membungkusnya dalam div yang memiliki ukuran tetap dan melimpah: disembunyikan. Input kemudian hanya terlihat melalui "jendela" div ini. Div dapat diberi gambar atau warna latar belakang, teks dapat ditambahkan, dan input dapat dibuat transparan untuk mengungkapkan latar belakang div:
HTML:
CSS:
Beri tahu saya jika ada masalah dan saya akan coba memperbaikinya.
sumber
Saya menyia-nyiakan hari saya hari ini untuk bekerja. Saya tidak menemukan satu pun solusi di sini yang bekerja dengan masing-masing skenario saya.
Kemudian saya ingat saya melihat contoh untuk Upload File JQuery tanpa kotak teks. Jadi yang saya lakukan adalah saya mengambil contoh mereka dan melepasnya ke bagian yang relevan.
Solusi ini setidaknya berfungsi untuk IE dan FF dan dapat ditata sepenuhnya. Dalam contoh di bawah ini, input file disembunyikan di bawah tombol "Tambah File".
sumber
Sembunyikan elemen file input dan buat tombol yang terlihat yang akan memicu peristiwa klik pada file input tersebut.
Coba ini:
CSS
HTML:
JAVASCRIPT (jQuery):
sumber
Sembunyikan tag file input dengan css, tambahkan label dan tetapkan ke tombol input. label akan dapat diklik dan ketika diklik, itu akan menjalankan dialog file.
Tambahkan gaya ke label sebagai tombol.
Demo Langsung
sumber
onchange
penangan keinput
untuk memungkinkan beberapa kode JS untuk mengambil info file yang diunggah.Itu akan sangat sulit. Masalah dengan tipe input file adalah bahwa biasanya terdiri dari dua elemen visual, sementara diperlakukan sebagai elemen DOM tunggal. Tambahkan bahwa beberapa browser memiliki tampilan dan rasa berbeda untuk input file, dan Anda siap untuk mimpi buruk. Lihat artikel ini di quirksmode.org tentang kebiasaan yang dimiliki input file. Saya jamin itu tidak akan membuat Anda bahagia (saya berbicara dari pengalaman).
[EDIT]
Sebenarnya, saya pikir Anda mungkin lolos dengan memasukkan input Anda ke elemen kontainer (seperti div), dan menambahkan margin negatif ke elemen. Secara efektif menyembunyikan bagian kotak teks dari layar. Pilihan lain adalah dengan menggunakan teknik dalam artikel yang saya tautkan, untuk mencoba bergaya seperti tombol.
sumber
Perbaiki untuk bekerja di semua browser RESOLVED:
Saya telah menguji FF, Chrome & IE - bekerja dengan baik, menerapkan gaya juga: D
sumber
Saya mencoba menerapkan dua solusi teratas, dan akhirnya menjadi buang-buang waktu SANGAT BESAR bagi saya. Pada akhirnya, menerapkan kelas .css ini memecahkan masalah ...
Selesai! super bersih dan super sederhana ...
sumber
Cara mudah lain untuk melakukan ini. Buat tag "input type file" dalam html dan sembunyikan. Kemudian klik tombol dan format sesuai kebutuhan. Setelah ini gunakan javascript / jquery untuk secara terprogram mengklik tag input ketika tombol diklik.
HTML: -
JavaScript: -
jQuery: -
CSS: -
Berikut ini adalah biola JS yang berfungsi untuk hal yang sama: - http://jsfiddle.net/32na3/
sumber
Saya menggunakan beberapa kode yang direkomendasikan di atas dan setelah berjam-jam menunggu waktu saya, saya akhirnya datang ke solusi gratis tas css.
Anda dapat menjalankannya di sini - http://jsfiddle.net/WqGph/
tetapi kemudian menemukan solusi yang lebih baik - http://jsfiddle.net/XMMc4/5/
sumber
onchange
peristiwa tersebut tidak dipicu untukinput
elemen tersembunyi .Ini obat baik saya:
Setidaknya itu berfungsi di Safari.
Polos dan sederhana.
sumber
Anda dapat memberi label pada suatu gambar sehingga ketika Anda mengkliknya, klik acara akan dipicu. Anda cukup membuat tombol normal tidak terlihat:
Ini bekerja untuk saya di semua browser, dan sangat mudah digunakan.
sumber
Anda dapat mengirim acara klik pada input file tersembunyi seperti ini:
sumber
var ev = document.createEvent('HTMLEvents');
ubah HTMLEvents ke MouseEventsvar ev = document.createEvent('MouseEvents');
HTML:
JQUERY
Semoga ini berhasil :)
sumber
Anda dapat memberikan opacity font elemen input dari 0. Ini akan menyembunyikan bidang teks tanpa menyembunyikan tombol 'Pilih File'.
Tidak diperlukan javascript, hapus peramban silang sejauh IE 9
Misalnya,
sumber
Ive solusi yang sangat aneh dengan ini ...
Masalahnya adalah atribut width yang menyembunyikan bidang teks akan bervariasi antar browser, bervariasi antara tema Windows XP dan sebagainya. Mungkin ini sesuatu yang bisa Anda kerjakan? ...
sumber
Saya tahu ini adalah posting lama tetapi cara sederhana untuk membuat teks menghilang hanya dengan mengatur warna teks ke latar belakang Anda.
mis. jika latar belakang input teks Anda putih, maka:
Ini tidak akan mempengaruhi teks Pilih File yang masih hitam karena browser.
sumber
Ini bekerja untuk saya:
sumber
solusi saya adalah hanya mengaturnya dalam div seperti "druveen" kata, namun saya iklankan gaya tombol saya sendiri ke div (membuatnya terlihat seperti tombol dengan: hover) dan saya hanya mengatur gaya "opacity: 0;" ke input. Ini sangat mempesona bagi saya, semoga berhasil juga untuk Anda.
sumber
Saya baru menata file input dengan lebar: 85px, dan bidang teks menghilang sama sekali
sumber
Kode HTML ini hanya menampilkan tombol Unggah File
sumber
sumber
Bagi saya, cara paling sederhana adalah menggunakan warna font seperti warna latar belakang. Sederhana, tidak elegan, tetapi bermanfaat.
sumber
Jadi, inilah cara terbaik untuk melakukan ini UNTUK SEMUA BROWSER:
Lupakan CSS!
sumber
Semua jawaban ini lucu, tetapi CSS tidak akan berfungsi karena tidak sama di semua browser dan perangkat, jawaban pertama yang saya tulis akan bekerja di semua hal selain Safari. Agar berfungsi di semua browser setiap saat, itu harus dibuat secara dinamis dan diciptakan kembali setiap kali Anda ingin menghapus teks input:
sumber
Jawaban tmanthey cukup bagus, kecuali Anda tidak bisa bermain dengan lebar-batas di Firefox v20. Jika Anda melihat tautan (demo, tidak dapat benar-benar ditampilkan di sini) mereka memecahkan masalah menggunakan font-size = 23px, transform: translate (-300px, 0px) scale (4) untuk Firefox untuk mendapatkan tombol yang lebih besar.
Solusi lain menggunakan .click () pada div yang berbeda tidak berguna jika Anda ingin membuatnya menjadi kotak input drag'n'drop.
sumber
Ada beberapa opsi yang valid di sini tetapi saya pikir saya akan memberikan apa yang saya dapatkan ketika mencoba untuk memperbaiki masalah yang sama. http://jsfiddle.net/5RyrG/1/
sumber
Diselesaikan dengan kode berikut:
<div style="overflow: hidden;width:83px;"> <input style='float:right;' name="userfile" id="userfile" type="file"/> </div>
sumber
Saya menulis ini:
Bekerja dengan baik di semua browser, tanpa jQuery, tanpa CSS.
sumber
Ini adalah versi sederhana dari solusi populer @ ampersandre yang berfungsi di semua browser utama. Markup ASP.NET
Kode JQuery
kode css
Menggunakan pemicu klik "UploadButton" tersembunyi untuk postback server dengan standar. Teks dengan "Unggah File" mendorong kontrol input keluar dari tampilan di pembungkus div ketika meluap sehingga tidak perlu menerapkan gaya apa pun untuk div kontrol "input file". Pemilih $ ([id $ = "FileInput"]) memungkinkan bagian id dengan awalan standar ASP.NET diterapkan. Nilai kotak teks FilePath diatur dari kode server di belakang dari hdnFileName.Value setelah file diunggah.
sumber