Answers:
它仅在开发人员中,但是“ 隐藏提交”模块可以解决问题。功能之一是:
单击提交按钮后隐藏(或禁用)
我刚刚将其安装在开发站点上,并且似乎可以很好地用于节点添加表单。当您单击提交按钮时,它将被隐藏,并替换为加载图像和“请稍候...”消息,直到最终提交表单。我还没有尝试过任何其他形式。
hook_form_alter()
-如果正在使用hook_form_FORMID_alter()
,请将其切换为generic hook_form_alter()
。如果是通用的hook_form_alter()
,如果在其中,则or
在this中添加一些if
。
这是Drupal 7的解决方案。代码是“隐藏提交”模块的简化版本。
即使使用“添加更多”按钮和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
声明样式;它不适用于Drupal7。它必须是Drupal.behaviors.themename = { attach: function (context, settings) { // ...
。有关更多信息,请参阅在Drupal 7中管理JavaScript