2016-04-05 39 views
0

投稿されたデータでプレビュー画面を作成し、それをFeatherlight Lightboxに表示しようとしています。Featherlight divを閉じるときに閉じる

次のサンプルコードがあります。

jQuery(document).ready(function() { 

//Triggle when Preview Button is Clicked. 
jQuery('.OpenLightBox').off('click').on('click', function(e) { 

    var pa_firstname= jQuery('input[name="pa-[name_first]"]').val(); 
    var pa_lastname= jQuery('input[name="pa-[name_last]"]').val(); 
    if (pa_firstname == null || pa_firstname == '') { 
     alert('Cannot be empty'); 
     return false; 
    } else { 

    jQuery('.LightBox').empty(); 
    jQuery('.LightBox').append('First Name in Ajax is' + pa_firstname + ' And Last Name in Ajax is ' + pa_lastname); 

      //alert('done'); 

    } 

    jQuery.ajax({ 
     url : padvisor_ajax.ajax_url, 

     type : 'POST', 
     dataType: 'json', 
     data : { 
      action: 'padvisor_test_ajaxcall_lightbox', 
      pa_first_name: pa_firstname, 
      pa_last_name: pa_lastname 
     }, 
     success: function (data) { 
      jQuery.featherlight(jQuery('.LightBox'), {}); 
      jQuery('.LightBox').toggle(); 

     } 

    }); 

    return false; 

}); 

そして、私は2つのフィールド、送信ボタンとプレビューボタン作成するには、次のHTMLコードを持っている:

<form id="pd_test"> 
<span id="pa-[name_first]" class="pa_name_first"><label for="pa_name_first" >First Name</label> 
<input type="text" name="pa-[name_first]" id="pa-[name_first]" value=""/> 
</span>'; 
<span id="pa-[name_last]" class="pa_name_last"><label for="pa_name_last" >Last Name</label><input type="text" name="pa-[name_last]" id="pa-[name_last]" value=""/></span> 
<button type="submit" value="Submit">Send Now</button> 

<button value="preview" class="OpenLightBox">Preview</button></form> 
<div class="LightBox" style="width: 300px; height: 60px; display:none;">This is the content, let the content dwell here</div> 

を私が使用したときに、私は私のDIVでfeatherlightボックスに見せることができますよ.toggleしかし、featherlightのライトボックスを閉じると、私は<div>をどのように隠すことができないのか分かりません。

フェザーライトボックスが閉じているときにDIVを非表示にする方法を教えてもらえますか?これが正しい方法かどうか教えてください。

私の目的...フォームフィールドから入力を収集し、それを処理するためにajax経由でPHPに送信し、成功すると、閉じるボタンと送信ボタンを持つプレビューライトボックスに表示します。閉じるボタンは閉じることができますが、送信ボタンはフォーム送信ボタンと同じ機能を持ちます。

問題1:フェザーライトが閉じるときに非表示にする必要があります。

問題2:今度はfeatherlightライトボックスが閉じ、プレビューボタンをもう一度クリックすると、DIVは空を呼び出しますが、.appendを呼び出して値を入れません。

+0

あなたがJSFiddleを作成してくださいことはできますか? –

+0

私も新しいバグを指摘しました..もし私がfeatherlightウィンドウを閉じて、プレビューボタンをもう一度クリックすると、.empty()が呼び出されますが.htmlは呼び出されないので、divは空になります。 –

+0

これはjsfiddleへの[リンク](https://jsfiddle.net/14qj5yjf/)リンクです。私はAjaxの部分を削除することで少し簡略化しました。 –

答えて

1

featherlightにコンテンツを正しく渡す必要がありました。また、featherlightがcloseイベントでそれを行うため、要素を切り替える必要はありませんでした。

HTML

<span id="pa-name_first" class="pa_name_first"><label for="pa_name_first" >First Name</label> 
    <input type="text" name="pa-name_first" id="pa-name_first" value=""/> 
</span> 
<span id="pa-name_last" class="pa_name_last"><label for="pa_name_last" >Last Name</label><input type="text" name="pa-name_last" id="pa-name_last" value=""/></span> 
<button type="submit" value="Submit">Send Now</button> 
<button type="button" class="OpenLightBox">Preview</button> 
<div class="LightBox" style="width: 300px; height: 60px; display:none;"> 
    <span id="content"></span> 
</div> 

jQueryの

//Triggle when Preview Button is Clicked. 
jQuery('.OpenLightBox').off('click').on('click', function(e) { 

    var pa_firstname= jQuery('input[name="pa-name_first"]').val(); 
    var pa_lastname= jQuery('input[name="pa-name_last"]').val(); 
    if (pa_firstname == null || pa_firstname == '') { 
     alert('Cannot be empty'); 
     return false; 
    } else { 
     var content = 'First Name in Ajax is' + pa_firstname + ' And Last Name in Ajax is ' + pa_lastname+''; 
     jQuery('#content').html(""); 
     jQuery('#content').html(content); 
     jQuery.featherlight('#content', {}); 
    } 
}); 

ワーキングJSFiddle:https://jsfiddle.net/rdawkins/9vktzw88/

+0

#contentがfeatherlightのデフォルトdivかどうか分かりますか?私はあなたのフィドルを試して、それはどのようにすべきかのように素晴らしく動作しますが、私は#contentとあなたがそのdivを作成する場所を理解していません。 このコードに関してもう少し質問がある場合は、新しいスレッドを開始するのですか、ここで続けますか? Submitボタンを追加したいので、クリックすると 'Query( '#Form_name')。on( 'submit'、function(event)')フォームを送信する+ライトボックスを閉じる –

+0

'#content'私はその中に作成したスパンです。

あなたはあなたの質問に似た疑問を持っている人を助けるために新しいスレッドを開始し、あなたの質問を特定する必要があります。これがあなたの最初の質問に答えるか、 ;) –

+0

これは私がやろうとしていることに向けた素晴らしいステップです。私はもう一度やり直して新しいスレッドを開始します。私は答えを受け入れるためのボタンを見つけることができません。 –

関連する問題