Sie sollten dies lieber auf Modulebene als auf Themenebene tun, da die JS ansonsten für Administrationsseiten nicht wirksam wird (es sei denn, Sie verwenden für beide das gleiche Thema).
Hier ist ein kleines Modul, um diese Funktionalität systemweit bereitzustellen:
Datei: 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
Datei: 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);
Datei: auto_upload.module
function auto_upload_init() {
drupal_add_js(drupal_get_path('module', 'auto_upload') . '/auto_upload.js');
}
Sobald Sie das Modul installiert haben, sind alle AJAX-fähigen Dateieingaben (dh die mit der Schaltfläche 'Aktualisieren') betroffen. Sie müssen nach Auswahl der Datei nicht mehr auf die Schaltfläche 'Hochladen' klicken .
Mit der delegate()
Methode funktioniert dies auch perfekt für Dateifelder, die mehrere Uploads zulassen, sowie für Felder, die als Ergebnis einer AJAX-Anforderung in die Seite geladen werden.
Ich habe das in Chrome, Safari und Firefox getestet und es funktioniert ein Vergnügen :)
Fußnote : In dem (wahrscheinlich sehr unwahrscheinlichen) Fall, dass Ihre Site jQuery 1.7 verwendet, sollten Sie on()
die überholte Methode verwenden delegate()
.
UPDATE Für dieses Modul habe ich ein Sandbox-Projekt erstellt .