0

私は、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();

そこでトリックをしました。

これをさらに解読できたら、また報告します...

4

1 に答える 1

0

値を取得するために jQuery を使用している場合は、次のように送信イベントを処理するために jQuery が必要であると想定します。

$("form#attributes").submit(function () { ... });

上記の仮定について 100% 確信があるわけではありません。誰か詳しく説明したいですか?

于 2010-08-31T23:28:45.290 に答える