Вам краще зробити це на рівні модуля, а не на рівні теми, оскільки JS не почне діяти на сторінках адміністратора в іншому випадку (якщо, звичайно, ви не використовуєте одну і ту ж тему для обох).
Ось невеликий модуль для забезпечення цієї функціональності в усьому світі:
Файл: 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
Файл: 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);
Файл: auto_upload.module
function auto_upload_init() {
drupal_add_js(drupal_get_path('module', 'auto_upload') . '/auto_upload.js');
}
Після того, як ви встановите модуль, всі вхідні файли, які мають ідентифікацію AJAX (тобто ті, у яких є кнопка "Оновити"), будуть зачеплені ... після вибору файлу вам більше не потрібно буде натискати кнопку "Завантажити". .
За допомогою delegate()
методу це також буде ідеально працювати для файлових полів, які дозволяють виконувати кілька завантажень, а також для полів, завантажених на сторінку в результаті запиту AJAX.
Я перевірив це в Chrome, Safari та Firefox, і це спрацює частування :)
Виноска . У випадку (напевно, дуже малоймовірного) випадку, коли ваш сайт використовує jQuery 1.7, ви повинні використовувати on()
метод, який замінив насіння delegate()
.
ОНОВЛЕННЯ Я створив проект для пісочниці для цього модуля.