Gunakan Bootstrap FileStyle , yang digunakan untuk menata bidang file formulir. Ini adalah plugin untuk pustaka komponen berbasis jQuery yang disebut Twitter Bootstrap
Sepertinya tidak bekerja untuk saya. Itu masih menunjukkan tombol default brorser. Juga, demo di github.com/markusslima/bootstrap-filestyle.git juga tidak berfungsi - semua contoh menunjukkan tombol default. Apakah saya melewatkan sesuatu?
Ya
7
@Tony Uhh .... apa yang membuat Anda berpikir Bootstrap tidak menggunakan "aneh <img /> hack" di bawahnya juga? :-)
Andz
@Ya dapatkah Anda memberi tahu browser apa dan versinya? Diuji sekarang di Chrome Versi 43.0.2357.130 (64-bit) di Linux dan semua contoh berfungsi dengan baik.
Fernando Kosh
20
Melempar pustaka javascript (dengan sebuah plugin!) Pada masalah sekecil itu adalah kesalahan berlebihan yang berlebihan.
MKaama
3
Diturunkan. Bahkan bukan jawaban, hanya solusi yang membutuhkan perpustakaan tambahan. Jawabannya harus bermaksud untuk mengubah perilaku rendering untuk browser.
wdetac
108
Anda dapat menempatkan gambar sebagai gantinya, dan melakukannya seperti ini:
CAVEAT : Di IE9 dan IE10 jika Anda memicu onClick dalam input file melalui javascript, formulir akan ditandai sebagai 'berbahaya' dan tidak dapat dikirimkan dengan javascript, tidak yakin apakah itu dapat dikirimkan secara tradisional.
Ini solusi cerdas. Tidak bisakah Anda juga melakukan ini dengan elemen <button>?
Komandan Kode
1
@Code Commander -Terima kasih, dan ya, Anda bisa melakukannya dengan setiap elemen yang Anda inginkan, tetapi yang paling umum adalah elemen <image>. Cukup singkirkan bidang tombol + teks dari "input file" ...
ParPar
2
Hanya kepala siapa saja yang menggunakan di atas, beberapa browser ponsel menonaktifkan memicu input file klik secara terprogram. Secara khusus, android 4 untuk Galaxy S III
newshorts
Saya menggunakan <input type="file" di dalam baris gridview asp.net, yang barisnya dapat ditambahkan secara dinamis .. sehingga akan sangat merepotkan untuk memanggil pemicu klik input yang relevan (dari baris yang sama) sambil mengklik pada gambar! : /
sohaiby
solusi Anda tidak berfungsi. Anda prolly tidak menetapkan batas, margin, padding dan warna latar belakang atau jika tidak itu akan menjadi jelas
yan bellavance
88
Sembunyikan input file. Buat input baru untuk menangkap acara klik dan meneruskannya ke input tersembunyi:
melempar file HTA dengan mode ie7 saya harus menghapus ;di akhir.
ATek
hebat, tidak ingin memasukkan bootstrap hanya untuk mengubah dua kata teks, tetapi bagaimana Anda melakukannya jika input file dibuat secara dinamis?
asparisme
@asparism menggunakan JavaScript untuk memanipulasi DOM, menyembunyikannya dengan mengatur gaya dan penggunaannya sebelum () dan menambahkan elemen input baru?
MushyPeas
3
@MushyPeas itu adalah cara termudah. mencoba bermain dengan css tetapi solusi ini jauh lebih cepat dan lebih mudah. terima kasih
Mara
2
Ini juga cara termudah bagi saya! Itu juga memungkinkan saya untuk MENYETEL tombol-file 'mock' sebagai salah satu dari serangkaian opsi tombol-bentuk lainnya - tanpa harus khawatir menampilkan tombol-file "Browse" yang tampak aneh.
Harry Mantheakis
47
Teks "unggah file ..." sudah ditentukan sebelumnya oleh browser dan tidak dapat diubah. Satu-satunya cara untuk mengatasi ini adalah dengan menggunakan komponen unggahan berbasis Flash atau Java seperti swfupload .
Bisakah Anda membuktikan bahwa itu tidak dapat diubah?
user198729
Atau dengan menelusuri kode sumber browser, setidaknya untuk kode sumber terbuka.
Pekka
Ini dapat dengan jawaban (untuk pertanyaan lain, sesuatu seperti "Mengapa konten bernilai, 'VALUE =" C: \ someFile.txt "' untuk bidang input dari file type, 'TYPE =" FILE "', diabaikan oleh browser? "): stackoverflow.com/questions/1342039
Peter Mortensen
23
Berfungsi Sempurna di Semua Peramban. Berharap itu juga akan berhasil untuk Anda.
Ini berfungsi dengan baik pada akhir saya di FF 41.0.2 saya. Anda menjalankan untuk mengatasi masalah kompatibilitas peramban, silakan lihat MODEL KOTAK CSS untuk mengurangi masalah.
Kode Hitam
1
Masalahnya mungkin FF dibangun di atas Gecko, bukan webkit. (tebakan terbaik saya)
Cullub
2
<label id = "addButton" untuk = "Upload" style = "background-color: # 000; color: #fff; padding: 4px; radius batas: 4px; font-family: monospace;" > Pilih Beberapa File </label> <input id = "Unggah" type = "file" multiple = "multiple" name = "_ photos" accept = "image / *" style = "visibilitas: hidden">
Code Black
4
Ok terima kasih! Lihatlah JSFiddle ini . Jika Anda mengedit jawaban Anda dengan itu, saya pikir itu layak mendapat upvote :)
Cullub
10
Ini adalah plugin JQuery untuk mengubah teks tombol elemen file input.
<labelclass="btn btn-primary"><iclass="fa fa-image"></i> Your text here<inputtype="file"style="display: none;"name="image"></label>
[Sunting dengan cuplikan]
<linkhref="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"rel="stylesheet"/><linkhref="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"rel="stylesheet"/><labelclass="btn btn-primary"><iclass="fa fa-image"></i> Your text here<inputtype="file"style="display: none;"name="image"></label>
Cobalah untuk melihat apa yang saya buat di sini jsfiddle.net
Ken Karlo
Terima kasih, persis apa yang saya inginkan :)
Garth Baker
7
Saya pikir ini yang Anda inginkan:
<buttonstyle="display:block;width:120px;height:30px;"onclick="document.getElementById('getFile').click()">Your text here</button><inputtype='file'id="getFile"style="display:none">
EDIT : Saya melihat sekarang dengan komentar yang Anda tanyakan tentang teks tombol, dan bukan path file. Salahku. Saya akan meninggalkan jawaban asli saya di bawah untuk berjaga-jaga jika ada orang lain yang menemukan pertanyaan ini menafsirkannya seperti yang saya lakukan sebelumnya.
EDIT ke-2 : Saya telah menghapus jawaban ini karena saya memutuskan bahwa saya salah memahami pertanyaan dan jawaban saya tidak relevan. Namun, komentar dalam jawaban lain menunjukkan bahwa orang masih ingin melihat jawaban ini, jadi saya membatalkan penghapusan.
JAWABAN ASLI SAYA (Saya pikir OP bertanya tentang jalan, bukan teks tombol):
Ini bukan fitur yang didukung untuk alasan keamanan . Browser web Opera digunakan untuk mendukung ini tetapi telah dihapus. Pikirkan tentang apa yang mungkin terjadi jika ini didukung; Anda dapat membuat halaman dengan input unggah file, mengisinya terlebih dahulu dengan path ke beberapa file sensitif dan kemudian secara otomatis mengirimkan formulir menggunakan javascript yang dipicu oleh onloadacara tersebut. Ini akan terjadi terlalu cepat bagi pengguna untuk melakukan apa pun.
<formenctype='multipart/form-data'action='/uploads.php'method=post><labelfor=b1><u>Your</u> caption here
<inputstyle='width:0px'type=filename=upfileid=b1onchange='optionalExtraProcessing(b1.files[0])'accept='image/png'></label></form>
Ini berfungsi tanpa javascript . Anda dapat menghiasi label dengan tingkat kerumitan apa pun, sesuka hati Anda. Ketika Anda mengklik label, klik itu secara otomatis dialihkan ke input file. Input file itu sendiri dapat dibuat tidak terlihat oleh metode apa pun. Jika Anda ingin label muncul seperti tombol, ada banyak solusi, misalnya:
jika Anda menggunakan rel dan memiliki masalah menerapkannya, saya ingin menambahkan beberapa tips dari jawaban asli yang diposting oleh @Fernando Kosh
Unduh file zip dan salin file folder aplikasi bootstrap-filestyle.min.js / aset / javascripts /
buka application.js Anda dan tambahkan baris ini di bawah ini
// = membutuhkan bootstrap-filestyle.min
buka kopi Anda dan tambahkan baris ini
$ (": file"). filestyle ({buttonName: "btn-primary", buttonBefore: true, buttonText: "Teks Anda di sini", ikon: false});
Anda cukup menambahkan beberapa trik css. Anda tidak perlu javascript atau lebih banyak file input dan saya menyimpan atribut nilai yang ada . Anda hanya perlu menambahkan css . Anda dapat mencoba solusi ini.
bagi saya itu tidak berfungsi teks kustom dengan bootstrap-filestyle . Ini membantu dengan hiasan tombol tapi teksnya aneh untuk diubah, sebelum mulai bergulat dengan css saya coba yang berikut ini:
bootstrap-filestyle membuat komponen sebagai rentang dengan kelas bernama butonText, jadi ketika memuat dokumen hanya mengubah teks. benar mudah dan itu harus bekerja di semua browser.
Ini adalah solusi alternatif yang mungkin bisa membantu Anda. Ini menyembunyikan teks yang muncul dari tombol, mencampurnya dengan warna latar belakang div. Maka Anda dapat memberikan div judul yang Anda suka.
Jawaban:
Gunakan Bootstrap FileStyle , yang digunakan untuk menata bidang file formulir. Ini adalah plugin untuk pustaka komponen berbasis jQuery yang disebut Twitter Bootstrap
Penggunaan sampel:
Termasuk:
Melalui JavaScript:
Melalui atribut data:
sumber
Anda dapat menempatkan gambar sebagai gantinya, dan melakukannya seperti ini:
HTML:
JQuery:
CAVEAT : Di IE9 dan IE10 jika Anda memicu onClick dalam input file melalui javascript, formulir akan ditandai sebagai 'berbahaya' dan tidak dapat dikirimkan dengan javascript, tidak yakin apakah itu dapat dikirimkan secara tradisional.
sumber
<input type="file"
di dalam baris gridview asp.net, yang barisnya dapat ditambahkan secara dinamis .. sehingga akan sangat merepotkan untuk memanggil pemicu klik input yang relevan (dari baris yang sama) sambil mengklik pada gambar! : /Sembunyikan input file. Buat input baru untuk menangkap acara klik dan meneruskannya ke input tersembunyi:
sumber
;
di akhir.Teks "unggah file ..." sudah ditentukan sebelumnya oleh browser dan tidak dapat diubah. Satu-satunya cara untuk mengatasi ini adalah dengan menggunakan komponen unggahan berbasis Flash atau Java seperti swfupload .
sumber
Berfungsi Sempurna di Semua Peramban. Berharap itu juga akan berhasil untuk Anda.
HTML:
<input type="file" class="custom-file-input">
CSS:
Ubah
content: 'Select some files';
dengan teks yang Anda inginkan di dalamnya''
JIKA TIDAK BEKERJA dengan firefox maka gunakan ini sebagai ganti input:
sumber
Ini adalah plugin JQuery untuk mengubah teks tombol elemen file input.
Contoh HTML:
Contoh JS:
Hasil:
sumber
JS
lebih lanjut http://geniuscarrier.com/how-to-style-a-html-file-upload-button-in-pure-css/
sumber
Secara sederhana
[Sunting dengan cuplikan]
sumber
Saya pikir ini yang Anda inginkan:
sumber
EDIT : Saya melihat sekarang dengan komentar yang Anda tanyakan tentang teks tombol, dan bukan path file. Salahku. Saya akan meninggalkan jawaban asli saya di bawah untuk berjaga-jaga jika ada orang lain yang menemukan pertanyaan ini menafsirkannya seperti yang saya lakukan sebelumnya.
EDIT ke-2 : Saya telah menghapus jawaban ini karena saya memutuskan bahwa saya salah memahami pertanyaan dan jawaban saya tidak relevan. Namun, komentar dalam jawaban lain menunjukkan bahwa orang masih ingin melihat jawaban ini, jadi saya membatalkan penghapusan.
JAWABAN ASLI SAYA (Saya pikir OP bertanya tentang jalan, bukan teks tombol):
Ini bukan fitur yang didukung untuk alasan keamanan . Browser web Opera digunakan untuk mendukung ini tetapi telah dihapus. Pikirkan tentang apa yang mungkin terjadi jika ini didukung; Anda dapat membuat halaman dengan input unggah file, mengisinya terlebih dahulu dengan path ke beberapa file sensitif dan kemudian secara otomatis mengirimkan formulir menggunakan javascript yang dipicu oleh
onload
acara tersebut. Ini akan terjadi terlalu cepat bagi pengguna untuk melakukan apa pun.sumber
Gunakan
<label>
untuk keteranganIni berfungsi tanpa javascript . Anda dapat menghiasi label dengan tingkat kerumitan apa pun, sesuka hati Anda. Ketika Anda mengklik label, klik itu secara otomatis dialihkan ke input file. Input file itu sendiri dapat dibuat tidak terlihat oleh metode apa pun. Jika Anda ingin label muncul seperti tombol, ada banyak solusi, misalnya:
sumber
Hanya kelas CSS & bootstrap
sumber
<input type="file">
, tambahkan gambar dan<input style="position:absolute">
itu akan menempati ruang<input type="file">
Gunakan CSS berikut untuk elemen file
sumber
jika Anda menggunakan rel dan memiliki masalah menerapkannya, saya ingin menambahkan beberapa tips dari jawaban asli yang diposting oleh @Fernando Kosh
buka application.js Anda dan tambahkan baris ini di bawah ini
// = membutuhkan bootstrap-filestyle.min
buka kopi Anda dan tambahkan baris ini
$ (": file"). filestyle ({buttonName: "btn-primary", buttonBefore: true, buttonText: "Teks Anda di sini", ikon: false});
sumber
Anda cukup menambahkan beberapa trik css. Anda tidak perlu javascript atau lebih banyak file input dan saya menyimpan atribut nilai yang ada . Anda hanya perlu menambahkan css . Anda dapat mencoba solusi ini.
sumber
Berikut adalah cara untuk "mengubah" teks input dengan tipe file, dengan HTML dan javascript murni:
sumber
bagi saya itu tidak berfungsi teks kustom dengan bootstrap-filestyle . Ini membantu dengan hiasan tombol tapi teksnya aneh untuk diubah, sebelum mulai bergulat dengan css saya coba yang berikut ini:
bootstrap-filestyle membuat komponen sebagai rentang dengan kelas bernama butonText, jadi ketika memuat dokumen hanya mengubah teks. benar mudah dan itu harus bekerja di semua browser.
Bersulang
sumber
Saya melakukannya seperti ini untuk proyek saya:
sumber
Ini adalah solusi alternatif yang mungkin bisa membantu Anda. Ini menyembunyikan teks yang muncul dari tombol, mencampurnya dengan warna latar belakang div. Maka Anda dapat memberikan div judul yang Anda suka.
sumber