답변:
개발자 전용이지만 제출 제출 모듈이 트릭을 수행합니다. 기능 중 하나는 다음과 같습니다.
제출 단추를 클릭 한 후 숨기기 (또는 비활성화)
방금 개발 사이트에 설치했으며 노드 추가 양식에 잘 작동하는 것 같습니다. 제출 버튼을 클릭하면 양식이 최종적으로 제출되기 전에 숨겨져 로딩 이미지와 '기다려주십시오 ...'메시지로 대체됩니다. 그래도 다른 형태로는 시도하지 않았습니다.
hook_form_alter()
사용중인 경우 hook_form_FORMID_alter()
generic으로 전환하십시오 hook_form_alter()
. hook_form_alter()
내부에 일반적인 경우 여기 에 일부를 추가 or
하십시오 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;
}
});
});
}
};
가장 쉬운 방법은 테마 제출 자바 스크립트 솔루션을 사용하여 양식 제출 후 버튼을 비활성화하는 것입니다. 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");
});
}
흐름은 다음과 같습니다.
위의 내용이 위험 할 수있는 일부 아약스 처리가 있는지, form_api 유효성 검사에서 오류가 발생하면 양식 제출을 다시 수행 할 수 없다고 확신하므로이를 테스트하고 필요에 맞게 사용자 정의하십시오. 제출 버튼이 비활성화 된 상태에서 미리보기 버튼을 클릭 할 수 있으므로 두 버튼을 모두 비활성화했습니다. 분명히 당신의 마일리지는 다양합니다.
Drupal.behaviors
선언 스타일을 사용하고 있습니다. Drupal 7에서는 작동하지 않습니다 Drupal.behaviors.themename = { attach: function (context, settings) { // ...
. 참조 드루팔 7에서 자바 스크립트를 관리 추가 정보를 원하시면