Совместное использование reCaptcha, Lightbox и API форм Drupal - PullRequest
0 голосов
/ 01 сентября 2010

Я разбирался с проблемами помещения формы 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);

Обе переменные не определены. Хм.

Таким образом, есть два вопроса меньшего размера («почему jquery не собирает значения?» И «может ли атрибут onsubmit убедить функцию submit ждать, пока она сделает свое дело?») И один большой:

Кому-нибудь удалось объединить форму Drupal, лайтбокс и рекапчу?

Edit: Вторая часть проблемы - jquery не собирал значения - была из-за того, что я использовал iframe внутри лайтбокса (иначе я не мог заставить его остаться). Замена выбора выше на:

challengeField = $('#iframeID').contents().find('input#recaptcha_challenge_field').val();

сделал трюк там.

Если я смогу взломать это дальше, я сообщу ...

1 Ответ

0 голосов
/ 01 сентября 2010

Если вы используете jQuery для получения значений, то я бы предположил, что вам нужен jQuery для обработки события submit, например:

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

Я не уверен на 100% в своем предположении выше. Кто-нибудь хочет уточнить?

...