0

jQuery UI のダイアログ オプションを使用して、キャプチャを含むポップアップ サインアップ フォームをレンダリングしています。

別のページでサインアップ フォームをレンダリングすると、キャプチャは問題なく表示されますが、ダイアログ ポップアップ フォームには表示されません。

私は HTML をチェックしましたが、何らかの理由で、キャプチャの「noscript」コード ブロックだけがページに到達しました。

私が見逃しているjQuery UIダイアログについて、そのような他のスクリプトに干渉する原因はありますか?

フォームのコードは次のとおりです。

<%= error_messages_for(@user) %>
<%= form_for(:user, :url => users_path, :remote => true, :html => {:id => 'create_user_form'}) do |f| %>
    <div class="in-field">
        <%= f.label(:first_name) %>
        <%= f.text_field(:first_name) %>
        <div class="field_valid"></div>
    </div>
    <div class="in-field">
        <%= f.label(:last_name) %>
        <%= f.text_field(:last_name) %>
        <div class="field_valid"></div>
    </div>
    <%= f.date_select(:birthday, :start_year => 1912) %><br />
    image stuff<br />
    <div class="in-field">
        <%= f.label(:username) %>
        <%= f.text_field(:username) %>
        <div class="field_valid"></div>
    </div>
    <div class="in-field">
        <%= f.label(:password) %>
        <%= f.password_field(:password) %>
        <div class="field_valid"></div>
    </div>
    <div class="in-field">
        <%= f.label(:password_confirmation) %>
        <%= f.password_field(:password_confirmation) %>
        <div class="field_valid"></div>
    </div>
    <div class="in-field">
        <%= f.label(:email) %>
        <%= f.text_field(:email) %>
        <div class="field_valid"></div>
    </div>
    <div class="in-field">
        <%= f.label(:email_confirmation) %>
        <%= f.text_field(:email_confirmation) %>
        <div class="field_valid"></div>
    </div>
        <div id="test">  
        <script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6LfLRdMSAAAAAJ2SYOMT2nNhu2aMw6s3XtD1s5Id"></script>
            </div>
    </div>
    <br />

<%= check_box_tag('eula', 'accepted', false) %> I agree to the <%= link_to('terms of service') %> and <%= link_to('privacy policy') %>.<br />
<%= f.submit 'Submit' %>
<% end %>

UI ポップアップ コードは次のとおりです。

$('.modal-dupe').click(function(){
var url = this.href;
$('#modal').remove();
var dialog = $('<div id="modal" style="display:none" class="loading"></div>').prepend('#barhappy_container');
dialog.load(url, function(){
    dialog.dialog({
        modal: true,
        draggable: false,
        position: 'center',
        dialogClass: 'no-title',
        width: 'auto',
        height: 'auto',
        resizable: false,
        open: function(){
                $.getScript('/assets/modal/in-modal-open.js');
        },
        close: function(event, ui){
            dialog.remove();
        }
    });
});
return false;

});

4

1 に答える 1

0

結局のところ、jQuery dialog() は開くときに関数引数を取ることができます。私は $.getScript() を介して必要な JavaScript のビットを呼び出していました。

を使用して Recaptcha を手動で作成できます。

$('SELECTOR FOR AN EMPTY DIV').each(function () {
    Recaptcha.create('YOUR PUBLIC KEY', this
});
于 2012-06-27T00:20:20.060 に答える