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 .
delegate()
wurde in 1.4.2 und Drupal 7 mit 1.4.4 ausgeliefert. Ich bin mir ziemlich sicher, dass dies auf einigen alten Sites mit der installierten jQuery funktioniertVerwenden Sie in dieser Situation das AutoUpload- Modul.
Es ist derzeit für D6 und D7 verfügbar
quelle
Drupal 6
Probieren Sie so etwas in Ihrem jQuery-Dokument aus
Fügen Sie Folgendes in page.tpl oder node.tpl ein
Ich kenne keinen Drupal-Weg, um dies zu erreichen.
Geige
quelle
.ahah-processed
handelt sich um einen Drupal 6-Klassennamen, und dieclick()
Methode ruft aus irgendeinem Grund keinen Klick auf diese Schaltflächen auf. Sie müssenmousedown()
stattdessen verwenden :)Sie erreichen es mit
on()
.delegate()
wurde veraltet.quelle
Schauen Sie sich das Integrationsmodul von Plupload an .
quelle
Wenn Sie das Feld zum Hochladen von Dateien im AJAX-Formular verwenden - nach dem Absenden können Sie die Funktion zum automatischen Hochladen verlieren (siehe https://drupal.stackexchange.com/a/31453/7313 ).
Um das Problem zu beheben, verwenden Sie dieses Skript
quelle