É melhor fazer isso no nível do módulo, em vez do tema, pois o JS não terá efeito nas páginas de administração de outra forma (a menos que você esteja usando o mesmo tema para ambos).
Aqui está um pequeno módulo para fornecer essa funcionalidade em todo o sistema:
Arquivo: 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
Arquivo: 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);
Arquivo: auto_upload.module
function auto_upload_init() {
drupal_add_js(drupal_get_path('module', 'auto_upload') . '/auto_upload.js');
}
Depois de instalar o módulo, todas as entradas de arquivo negadas pelo AJAX (ou seja, aquelas que possuem um botão 'Atualizar') serão afetadas ... você não precisará mais pressionar o botão 'Enviar' depois de selecionar o arquivo .
Ao usar o delegate()
método, isso também funcionará perfeitamente para campos de arquivos que permitem vários uploads e também para campos carregados na página como resultado de uma solicitação AJAX.
Eu testei isso no Chrome, Safari e Firefox e funciona muito bem :)
Nota de rodapé : No evento (provavelmente muito improvável) de seu site estar usando o jQuery 1.7, você deve usar o on()
método que substituiu delegate()
.
ATUALIZAÇÃO Criei um projeto de sandbox para este módulo.