Saya mencoba memicu kotak unggah (tombol browse) menggunakan jQuery.
Metode yang saya coba sekarang adalah:
$('#fileinput').trigger('click');
Tapi sepertinya itu tidak berhasil. Tolong bantu. Terima kasih.
javascript
jquery
css
Alec Smart
sumber
sumber
Jawaban:
Ini karena pembatasan keamanan.
Saya menemukan bahwa pembatasan keamanan hanya ketika
<input type="file"/>
diatur kedisplay:none;
atau sedangvisbilty:hidden
.Jadi saya mencoba memposisikannya di luar viewport dengan mengatur
position:absolute
dantop:-100px;
dan menjalankannya.lihat http://jsfiddle.net/DSARd/1/
sebut itu hack.
Semoga itu berhasil untuk Anda.
sumber
left: -100px;
. Anda tidak pernah tahu berapa lama bisa menjadi sebuah halamanini bekerja untuk saya:
JS:
HTML:
CSS:
>>> Satu lagi yang berfungsi Cross-Browser: <<<
Idenya adalah bahwa Anda overlay tombol "Browse" besar yang tak terlihat di atas tombol kustom Anda. Jadi ketika pengguna mengklik tombol kustom Anda, dia benar-benar mengklik tombol "Browse" pada kolom input asli.
JS Fiddle: http://jsfiddle.net/5Rh7b/
HTML:
CSS:
JavaScript:
sumber
height
disarankan untuk berubah keheight: 100%
Anda dapat menggunakan elemen LABEL ex.
Ini akan memicu file input
sumber
Saya membuatnya bekerja (= diuji) di IE8 +, FF dan chrome baru-baru ini:
Kuncinya adalah fokus sebelumnya menembakkan klik (jika tidak, chrome mengabaikannya).
Catatan: Anda MEMBUTUHKAN agar input Anda ditampilkan dan terlihat (seperti pada, bukan
display:none
dan tidakvisibility:hidden
). Saya menyarankan (seperti banyak yang lain miliki sebelumnya) untuk benar-benar memposisikan input dan membuangnya dari layar.sumber
Lihat biola saya.
http://jsfiddle.net/mohany2712/vaw8k/
sumber
adardesign memakukannya mengenai elemen input file yang diabaikan ketika disembunyikan. Saya juga memperhatikan banyak orang menggeser ukuran elemen ke 0, atau mendorongnya keluar dari batas dengan penyesuaian posisi dan overflow. Ini semua adalah ide bagus.
Cara alternatif yang juga tampaknya bekerja dengan sangat baik adalah dengan hanya mengatur opacity menjadi 0 . Maka Anda selalu dapat mengatur posisi agar tidak mengimbangi elemen lain seperti halnya hide. Sepertinya sedikit tidak perlu untuk menggeser elemen hampir 10K piksel ke segala arah.
Inilah sedikit contoh untuk mereka yang menginginkannya:
sumber
Hanya untuk rasa ingin tahu, Anda dapat melakukan sesuatu seperti yang Anda inginkan dengan secara dinamis membuat formulir unggah dan memasukkan file, tanpa menambahkannya ke pohon DOM:
Tidak perlu menambahkan unggahanForm ke DOM.
sumber
Kode yang benar:
sumber
Itu disengaja dan berdasarkan desain. Ini masalah keamanan.
sumber
Sebenarnya, saya menemukan metode yang sangat mudah untuk ini, yaitu:
Dengan cara ini, field input file Anda dapat memiliki properti css display pada tidak ada dan masih menang perdagangan :)
sumber
Sudah terlambat untuk menjawab tetapi saya pikir pengaturan minimal ini berfungsi dengan baik. Saya juga mencari yang sama.
// css
jsbin
demo tombol input file bootstrap
sumber
Ini adalah pertanyaan yang sangat lama, tetapi sayangnya masalah ini masih relevan dan membutuhkan solusi.
Solusi (ternyata sangat sederhana) yang saya buat adalah dengan "menyembunyikan" bidang input file aktual dan membungkusnya dengan tag LABEL (dapat didasarkan pada Bootstrap dan HTML5, untuk peningkatan).
See here:
Contoh kode di siniDengan cara ini, bidang input file nyata tidak terlihat dan yang Anda lihat hanyalah "tombol" khusus yang sebenarnya merupakan elemen LABEL yang dimodifikasi. Ketika Anda mengklik pada elemen LABEL ini, jendela untuk memilih file muncul dan file yang Anda pilih akan masuk ke bidang input file nyata.
Selain itu, Anda dapat memanipulasi tampilan dan perilaku sesuai keinginan (misalnya: mendapatkan nama file yang dipilih dari file input file, setelah dipilih, dan memperlihatkannya di suatu tempat. Elemen LABEL tidak melakukan itu secara otomatis, tentu saja, saya biasanya hanya memasukkannya ke dalam LABEL, sebagai konten teksnya).
Waspadalah! Manipulasi tampilan dan perilaku ini terbatas pada apa pun yang dapat Anda bayangkan dan pikirkan. ;-) ;-)
sumber
Saya berhasil dengan $ (...). Klik (); dengan JQuery 1.6.1
sumber
atau yang lainnya
sumber
saya punya masalah dengan validasi sisi klien kustom
<input type="file"/>
saat menggunakan tombol palsu untuk memicunya dan solusi @Guillaume Bodi bekerja untuk saya (juga denganopacity: 0;
pada chrome)dan gaya css untuk input unggahan
sumber
Coba ini, ini adalah retasan. Posisi: absolut untuk Chrome dan pemicu ('perubahan') untuk IE.
sumber
$.browser
sudah usang dalam versi terbaru dari jQueryMasalah saya sedikit berbeda pada iOS 7. Ternyata FastClick menyebabkan masalah. Yang harus saya lakukan adalah menambah
class="needsclick"
tombol saya.sumber
Ini mungkin jawaban terbaik, mengingat masalah lintas browser.
CSS:
JS:
HTML:
sumber
Saya pikir saya mengerti masalah Anda, karena saya punya yang sama. Jadi tag
<label>
memiliki atribut untuk, Anda dapat menggunakan atribut ini untuk menautkan input Anda dengan type = "file". Tetapi jika Anda tidak ingin mengaktifkan ini menggunakan label ini karena beberapa aturan tata letak Anda, Anda dapat melakukannya seperti ini.Tentu saja Anda akan menyesuaikan ini untuk keperluan dan tata letak Anda sendiri, tetapi itu cara yang lebih mudah yang saya tahu untuk membuatnya bekerja !!
sumber
Berdasarkan jawaban Guillaume Bodi saya melakukan ini:
yang artinya tersembunyi untuk memulai dan kemudian ditampilkan untuk pemicu, lalu disembunyikan lagi dengan segera.
sumber