私は、Drupal フォームを Lightbox2 ライトボックスに配置するという問題に取り組んできました。
おそらく間違って、フォームを送信する前にすべての検証を JavaScript で行うことにしました (通常の検証でライトボックス内のフォームを返すようにすることはできませんでした)。
とにかく、私は使用しています:
$form['#attributes']['onsubmit'] = 'return Drupal.mymodule.validateMailForm();';
そしてそれはうまくいきます。
次は ReCaptcha テストです。
if (validation == 'failed') {
return false;
}
else {
return Drupal.mymodule.validateCaptcha();
}
recaptcha の結果に関係なく、最終的に recaptcha がフォームの送信を停止するようになったとき (関数を「return false」に交換しました)、validateCaption() 関数内でこれを発見しました。
challengeField = $("input#recaptcha_challenge_field").val();
responseField = $("input#recaptcha_response_field").val();
console.log(challengeField);
console.log(responseField);
両方の変数は「未定義」です。うーん。
したがって、2 つの小さな質問 (「なぜ jquery は値を取得しないのですか?」と「onsubmit 属性は、submit 関数が処理を行っている間、待機するように説得できますか?」) と、1 つの大きな質問があります。
Drupal フォーム、ライトボックス、および Recaptcha を組み合わせることができた人はいますか?
編集: 問題の2番目の部分-jqueryが値を取得しない-は、ライトボックス内でiframeを使用していたためでした(そうでなければそれを維持できませんでした)。上記の選択を次のものに置き換えます。
challengeField = $('#iframeID').contents().find('input#recaptcha_challenge_field').val();
そこでトリックをしました。
これをさらに解読できたら、また報告します...