Saya ingin mengubah teks standar pada tombol " Choose File
" ketika kita gunakan input="file"
.
Bagaimana saya bisa melakukan ini? Juga seperti yang Anda lihat di tombol gambar ada di sebelah kiri teks. Bagaimana saya bisa meletakkannya di sisi kanan teks?
html
file
input
default-value
Harry Joy
sumber
sumber
Jawaban:
Setiap browser memiliki rendition kontrol sendiri dan dengan demikian Anda tidak dapat mengubah teks atau orientasi kontrol.
Ada beberapa jenis "peretasan" yang mungkin ingin Anda coba jika menginginkan html/css solusi daripada Flash atau cahaya peraklarutan.
http://www.quirksmode.org/dom/inputfile.html
http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom
Secara pribadi, karena sebagian besar pengguna tetap menggunakan browser pilihan mereka, dan karena itu mungkin terbiasa melihat kontrol dalam rendisi default, mereka mungkin akan bingung jika mereka melihat sesuatu yang berbeda (tergantung pada jenis pengguna yang Anda hadapi) .
sumber
Gunakan
Di bawah ini adalah kode untuk mengambil nama file yang diunggah"for"
atributlabel
untukinput
.sumber
display:none
dapat digunakan pada INPUT sehingga tidak akan menggunakan ruang yang tidak diperlukan.Saya pikir ini yang Anda inginkan:
sumber
Ini mungkin membantu seseorang di masa depan, Anda dapat menata label untuk input sesuka Anda dan memasukkan apa pun yang Anda inginkan di dalamnya dan menyembunyikan input dengan tidak ada tampilan.
Ini berfungsi dengan baik pada cordova dengan iOS
sumber
Ini tidak mungkin. Kalau tidak, Anda mungkin perlu menggunakan kontrol unggahan Silverlight atau Flash.
sumber
Di sini bagaimana Anda dapat melakukannya:
jQuery:
css
Kode HTML:
sumber
Ini masih yang terbaik sejauh ini
sumber
Menggunakan Bootstrap Anda dapat melakukan hal ini seperti kode di bawah ini.
sumber
Saya membuat skrip dan menerbitkannya di GitHub: dapatkan selectFile.js Mudah digunakan, jangan ragu untuk mengkloning.
HTML
JS
DEMO
jsfiddle.net/Thielicious/4oxmsy49/
sumber
Pembaruan 2017:
Saya telah melakukan penelitian tentang bagaimana ini bisa dicapai. Dan penjelasan / tutorial terbaik ada di sini: https://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/
Saya akan menulis ringkasan di sini kalau-kalau itu tidak tersedia. Jadi, Anda harus memiliki HTML:
Kemudian sembunyikan input dengan CSS:
Kemudian beri label gaya:
Kemudian secara opsional Anda dapat menambahkan JS untuk menampilkan nama file:
Tetapi benar-benar hanya membaca tutorial dan mengunduh demo, itu sangat bagus.
sumber
Saya akan menggunakan
button
untuk memicuinput
:Cepat dan bersih.
sumber
Anda dapat menggunakan pendekatan ini, itu berfungsi bahkan jika banyak input file.
sumber
Ini seharusnya bekerja:
sumber
Ini adalah bagaimana ini dilakukan dengan bootstrap, hanya kamu yang harus meletakkan input asli di suatu tempat ... idk di kepala dan hapus <br> jika kamu memilikinya, karena itu hanya tersembunyi dan mengambil ruang pula :)
sumber
Biarkan saya menambahkan retasan yang saya gunakan. Saya ingin memiliki bagian yang memungkinkan Anda untuk menarik dan melepas file, dan saya ingin bagian tarik dan lepas itu dapat diklik bersama dengan tombol unggah yang asli.
Ini adalah bagaimana kelihatannya ketika saya selesai (dikurangi kemampuan drag and drop, ada banyak tutorial tentang cara melakukannya).
Dan kemudian saya benar-benar membuat serangkaian posting blog yang terutama tentang tombol unggah file.
sumber
Ok jadi cara css murni sangat sederhana untuk membuat file input kustom Anda.
Gunakan label, tetapi seperti yang Anda tahu dari jawaban sebelumnya, label tidak memanggil fungsi onclick di firefox, mungkin bug tetapi tidak masalah dengan yang berikut ini.
Apa yang Anda lakukan adalah menata label untuk melihat seperti yang Anda inginkan
sekarang cukup sembunyikan tombol input yang sebenarnya, tetapi Anda tidak dapat mengaturnya
visability: hidden
Jadi buat tidak terlihat dengan pengaturan
opacity: 0;
sekarang karena Anda mungkin telah memperhatikan saya memiliki kelas yang sama pada label saya seperti yang saya lakukan bidang input saya, itu karena saya ingin keduanya memiliki gaya yang sama, jadi di mana pun Anda mengklik label, Anda sebenarnya mengklik yang tidak terlihat bidang input.
sumber
Solusi saya ...
HTML:
Jquery:
Ini jahat: D
sumber
sumber