É 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.
delegate()
foi adicionado no 1.4.2 e o Drupal 7 foi lançado com o 1.4.4. Eu tenho certeza que eu tenho esta multa trabalhando em um par de sites antigos com o estoque jQuery instaladoPara qualquer pessoa nessa situação, tente usar o módulo AutoUpload .
Atualmente, está disponível para D6 e D7
fonte
Drupal 6
Tente algo parecido com isto no seu documento jQuery pronto
Cole o seguinte em page.tpl ou node.tpl
Não conheço nenhuma maneira Drupal de conseguir isso.
violino
fonte
.ahah-processed
é o nome de uma classe Drupal 6 e oclick()
método não invoca um clique nesses botões por algum motivo; você precisa usar emmousedown()
vez disso :)Você pode conseguir usando
on()
.delegate()
foi descontinuado.fonte
Dê uma olhada no módulo de integração Plupload .
fonte
Se você usar o campo de upload de arquivo no formulário AJAX - após o envio, poderá perder a funcionalidade de upload automático (consulte https://drupal.stackexchange.com/a/31453/7313 )
Para corrigir - use este script
fonte