回答:
これはdevにしかありませんが、Hide Submitモジュールがトリックを行います。機能の1つは次のとおりです。
クリックした後、送信ボタンを非表示(または無効)にします
開発サイトにインストールしたばかりで、ノード追加フォームでうまく機能しているようです。送信ボタンをクリックすると、非表示になり、フォームが最終的に送信される前に、読み込み中の画像と「お待ちください...」メッセージに置き換えられます。ただし、他の形式では試していません。
hook_form_alter()
使用しhook_form_FORMID_alter()
ている場合は、genericに切り替えhook_form_alter()
ます。ifが一般的な場合は、これにhook_form_alter()
いくつかを追加or
しますif
。
Drupal 7のソリューションを次に示します。コードはHide Submitモジュールの簡易バージョンです。
このコードは、「さらに追加」ボタンやAJAXフォームでも正常に機能します。
Drupal.behaviors.hideSubmitButton = {
attach: function(context) {
$('form.node-form', context).once('hideSubmitButton', function () {
var $form = $(this);
$form.find('input.form-submit').click(function (e) {
var el = $(this);
el.after('<input type="hidden" name="' + el.attr('name') + '" value="' + el.attr('value') + '" />');
return true;
});
$form.submit(function (e) {
if (!e.isPropagationStopped()) {
$('input.form-submit', $(this)).attr('disabled', 'disabled');
return true;
}
});
});
}
};
最も簡単な方法は、テーマベースのJavaScriptソリューションを実行して、フォーム送信後にボタンを無効にすることです。theme.infoファイルに、javascriptファイルを入れて、テーマAPIでロードできるようにします。
scripts[] = js/themename-script.js
次に、themename-script.jsでDrupal.behaviors.themenameセクションに追加して、次のようにします。
Drupal.behaviors.themename = function()
{
$('.node-form').submit(function(){
$('#edit-submit').attr("disabled", "disabled");
$('#edit-preview').attr("disabled", "disabled");
});
}
したがって、フローは次のとおりです。
上記が危険である可能性のあるajax処理があり、form_api検証でエラーが検出された場合、フォーム送信が二度と行われない可能性があるため、これをテストし、ニーズに合わせてカスタマイズしてください。送信ボタンが無効になっているときにプレビューボタンをクリックすることができるため、両方のボタンを無効にしました。明らかにあなたのマイレージは異なります。
Drupal.behaviors
宣言スタイルを使用しています。Drupal 7では機能しませんDrupal.behaviors.themename = { attach: function (context, settings) { // ...
。詳細については、Drupal 7でのJavaScriptの管理を参照してください