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.