간단한 질문처럼 들립니다.이중 제출을 방지하기 위해 클릭 할 때 Drupal 양식 제출 단추를 사용 불가능하게 할 수 있습니까?
$("#edit-save").click(function(event) {
$(this).attr("disabled", "true");
});
그러나이 작업이 완료되면 내 양식 제출 처리기가 호출되지 않습니다.
이
사용자 정의 hook_menu에 정의 된 내 자신의 경로 형태 : 양식에서$items['my_form'] = array(
'title' => 'My form',
'page callback' => 'drupal_get_form',
'page arguments' => array('mymod_myform'),
'type' => MENU_CALLBACK,
);
, 나는 버튼을 입력하고 버튼 취소가 :
$form['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
);
$form['save'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
나는 내 자신을 정의 제출 핸들러 :
$form['#submit'][] = 'mymod_myform_submit';
나는 냄새에 drupal_get_form() 함수에서 추적 코드의 비트를 넣었습니다 양식을 제출할 때 $ _POST 변수 JQuery와 마법을 사용할 때, $ _POST 변수는 "OP"매개 변수를 포함
Array
(
[op] = Save
[form_build_id] => form-6e74c87390e3fc48d0bebd2f5193315b
[form_token] => 33db6e34c0350e33c48861a63a38d45f
[form_id] => dh_seo_workload_item_form
)
을하지만 난하지 않으려면 jQuery를 마법을 사용하는 경우는 클릭 됐어요 후 조건 "OP"매개 변수가 더 이상 버튼을 제출하지 $ _POST 배열에 포함되어 있으므로 Drupal은 양식이 제출되지 않았다고 생각합니다.
나는이 질문을 Prevent double submission of forms in jQuery에 보았지만 이것이 정말로 해키 한 수정처럼 보인다고 우려하고 있으며 더 좋은 방법이 있어야합니다.
나도 덜 해킹 된 해결책으로 링크 된 질문에 대한 답변을 추가했습니다. –
클릭시 버튼이 비활성화되어 가능하지 않을 수 있습니다. 아래의 내 솔루션은이 문제를 해결하기 위해 1ms에서 setTimeout을 사용합니다. – Nick