Anda akan lebih baik melakukan ini di tingkat modul, daripada tingkat tema, karena JS tidak akan berlaku untuk halaman admin sebaliknya (kecuali tentu saja Anda menggunakan tema yang sama untuk keduanya).
Berikut adalah modul kecil untuk menyediakan fungsionalitas ini di seluruh sistem:
File: auto_upload.info
name = Auto Upload
description = Removes the need for users to press the 'Upload' button for AJAX file uploads.
core = 7.x
dependencies[] = file
File: auto_upload.js:
(function ($) {
Drupal.behaviors.autoUpload = {
attach: function (context, settings) {
$('form', context).delegate('input.form-file', 'change', function() {
$(this).next('input[type="submit"]').mousedown();
});
}
};
})(jQuery);
File: auto_upload.module
function auto_upload_init() {
drupal_add_js(drupal_get_path('module', 'auto_upload') . '/auto_upload.js');
}
Setelah Anda menginstal modul, semua input file yang di-AJAX-ified (yaitu yang memiliki tombol 'Perbarui') akan terpengaruh ... Anda tidak perlu menekan tombol 'Unggah' lagi setelah memilih file .
Dengan menggunakan delegate()
metode ini, ini juga akan berfungsi dengan sempurna untuk bidang file yang memungkinkan banyak unggahan, dan juga untuk bidang yang dimuat ke halaman sebagai hasil permintaan AJAX.
Saya sudah mengujinya di Chrome, Safari, dan Firefox dan itu berhasil :)
Catatan Kaki : Dalam acara (mungkin sangat tidak mungkin) bahwa situs Anda menggunakan jQuery 1.7, Anda harus menggunakan on()
metode ini, yang telah melampaui kecepatan delegate()
.
PEMBARUAN Saya telah membuat proyek kotak pasir untuk modul ini.
delegate()
ditambahkan dalam 1.4.2 dan Drupal 7 kapal dengan 1.4.4. Saya cukup yakin saya dapat berfungsi dengan baik di beberapa situs lama dengan stok jQuery terinstalBagi siapa pun yang berada dalam situasi ini, coba gunakan modul AutoUpload .
Saat ini tersedia untuk D6 dan D7
sumber
Drupal 6
Cobalah sesuatu seperti ini di dokumen jQuery Anda
Rekatkan yang berikut di page.tpl atau node.tpl
Saya tidak terbiasa dengan cara Drupal untuk mencapai ini.
biola
sumber
.ahah-processed
adalah nama kelas Drupal 6, danclick()
metode ini tidak benar-benar meminta klik pada tombol-tombol itu untuk beberapa alasan; Anda perlu menggunakanmousedown()
sebagai gantinya :)Anda dapat mencapainya menggunakan
on()
.delegate()
telah ditinggalkan.sumber
Lihatlah modul integrasi Plupload .
sumber
Jika Anda menggunakan bidang unggah file pada formulir AJAX - setelah mengirimkannya, Anda dapat kehilangan fungsionalitas unggah otomatis (lihat https://drupal.stackexchange.com/a/31453/7313 )
Untuk memperbaiki - gunakan skrip ini
sumber