2010-08-30 2 views
3

Я пытаюсь загрузить форму через ajax внутри fancybox. Он отлично работает, все работает нормально.recaptcha в пределах модального окна (fancybox)

Я использовал плагин recaptcha (rails) и получил капчу на форме. Теперь, когда fancybox загружается, его перенаправляют на пустую страницу, только на ней.

Я предполагаю, что это некоторая проблема с iframe и модальным окном?

Кто-нибудь загрузил recaptcha на форме внутри fancybox? помог бы мне, если вы могли бы указать мне на пример ..

ценит вашу помощь ...

ответ

0

У меня такая же проблема, но только в Safari (предположительно Chrome тоже). Он отлично работает в Firefox. Это не имеет никакого отношения к Ruby (я использую Grails), и проблема возникает во всех всплывающих окнах jQuery (я пробовал blockUI, SimpelModal и ThickBox).

Насколько я могу судить, по какой-то причине, когда jQuery перемещает iframe (это то, что ReCaptcha) в domtree, Webkit решает загрузить содержимое iframe в качестве новой страницы. Или, возможно, заменяет содержимое страницы содержимым iframe.

Я уверен, что это ошибка Webkit, и я понятия не имею, возможно ли исправление.

Edit: Оказывается есть исправление возможно:

$('#captcha-form script').remove();

«каптчем форма» является идентификатором формы, содержащей капчут. Удалите теги сценария, чтобы сценарии не выполнялись во второй раз, когда Safari повторно отображает их после перемещения jQuery. Обработчики событий, созданные сценарием, не находятся в тегах сценария, поэтому они выживают.

Я думаю, что Safari повторно выполняет javascript, когда он повторно отображает теги. При открытии диалога все в модальном диалоговом окне появляется повторно. Кроме того, я подозреваю, что после повторной визуализации document.write, используемый recaptcha, путается о том, где это и что происходит.

0

если кто-то еще ищет простое решение этого, я уже успел получить ReCaptcha, работающий в FancyBox, вызвав его в качестве фрейма

если назвав его из селектора класса:

<script> 
$(document).ready(function() { 
    $(".example").fancybox({ 
      fitToView : true, 
      autoSize : false, 
      openEffect : 'elastic', 
      closeEffect : 'elastic' 
    }); 
}); 
</script> 

Затем в HTML

<a href="http://url.com/iframe" class="example fancybox.iframe>Captcha Fancybox</a> 

Или, если вы запуска FancyBox программно, сделать что-то вроде:

$.fancybox({ 
    width  : '520px', 
    height  : '230px', 
    autoSize  : false, 
    openEffect : 'elastic', 
    closeEffect : 'elastic', 
    'href'  : 'http://www.url.cc', 
    type   : 'iframe' 
    }); 
0

Простое решение, чтобы загрузить форму с рекапчи через AJAX в FancyBox.

<%= recaptcha_tags ajax: true %>