テーマレベルではなくモジュールレベルでこれを行うと、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()
ます。
更新このモジュールのサンドボックスプロジェクトを作成しました。