Vous feriez mieux de faire cela au niveau du module, plutôt qu'au niveau du thème, car le JS ne prendra pas effet pour les pages d’administration (à moins que vous utilisiez bien sûr le même thème pour les deux).
Voici un petit module pour fournir cette fonctionnalité à l’ensemble du système:
Fichier: 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
Fichier: 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);
Fichier: auto_upload.module
function auto_upload_init() {
drupal_add_js(drupal_get_path('module', 'auto_upload') . '/auto_upload.js');
}
Une fois que vous avez installé le module, toutes les entrées de fichier AJAX (c'est-à-dire celles qui possèdent un bouton «Mise à jour») seront affectées… vous n'aurez plus besoin d'appuyer sur le bouton «Télécharger» après avoir sélectionné le fichier. .
En utilisant cette delegate()
méthode, cela fonctionnera également parfaitement pour les champs de fichier autorisant plusieurs téléchargements, ainsi que pour les champs chargés dans la page à la suite d'une demande AJAX.
J'ai testé ça sous Chrome, Safari et Firefox et ça marche un plaisir :)
Note de bas de page : Dans le cas (probablement très peu probable) que votre site utilise jQuery 1.7, vous devez utiliser la on()
méthode, qui a été remplacée delegate()
.
UPDATE J'ai créé un projet de sandbox pour ce module.