Sería mejor hacer esto en el nivel del módulo, en lugar del nivel del tema, ya que el JS no tendrá efecto para las páginas de administración de lo contrario (a menos que, por supuesto, esté usando el mismo tema para ambos).
Aquí hay un pequeño módulo para proporcionar esta funcionalidad en todo el sistema:
Archivo: 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
Archivo: 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);
Archivo: auto_upload.module
function auto_upload_init() {
drupal_add_js(drupal_get_path('module', 'auto_upload') . '/auto_upload.js');
}
Una vez que haya instalado el módulo, se verán afectadas todas las entradas de archivos que tengan AJAX (es decir, aquellas que tengan un botón 'Actualizar') ... ya no tendrá que presionar el botón 'Cargar' después de seleccionar el archivo .
Al usar el delegate()
método, esto también funcionará perfectamente para los campos de archivo que permiten múltiples cargas, y también para los campos que se cargan en la página como resultado de una solicitud AJAX.
Lo probé en Chrome, Safari y Firefox y funciona de maravilla :)
Nota al pie : en el caso (probablemente muy poco probable) de que su sitio esté usando jQuery 1.7, debe usar el on()
método, que ha sido reemplazado delegate()
.
ACTUALIZACIÓN He creado un proyecto de sandbox para este módulo.
delegate()
se agregó en 1.4.2 y Drupal 7 se envía con 1.4.4. Estoy bastante seguro de que esto funciona bien en un par de sitios antiguos con el stock jQuery instaladoPara cualquiera que se encuentre en esta situación, intente usar el módulo AutoUpload .
Actualmente está disponible para D6 y D7
fuente
Drupal 6
Pruebe algo como esto en su documento jQuery listo
Pegue lo siguiente en page.tpl o node.tpl
No estoy familiarizado con ninguna forma de Drupal para lograr esto.
violín
fuente
.ahah-processed
es un nombre de clase Drupal 6, y elclick()
método no invoca un clic en esos botones por alguna razón; debes usarmousedown()
en su lugar :)Puedes lograrlo usando
on()
.delegate()
ha quedado en desusofuente
Eche un vistazo al módulo de integración Plupload .
fuente
Si usa el campo de carga de archivos en el formulario AJAX, después de enviarlo, puede perder la funcionalidad de carga automática (consulte https://drupal.stackexchange.com/a/31453/7313 )
Para solucionarlo, use este script
fuente