Comment fermer une fancybox jQuery à partir d'un clic de bouton

j'utilise fantaisie boîte pour créer un popup et charger une autre page dessus en utilisant une iframe. voici mon code

    <script type="text/javascript">
$(document).ready(function() {

    $('.calendar .day').click(function() {
        day_num = $(this).find('.day_num').html();
        day_data = prompt('Enter Stuff', $(this).find('.content').html());
        if (day_data != null) {

            $.ajax({
                url: window.location,
                type: 'POST',
                data: {
                    day: day_num,
                    data: day_data
                },
                success: function(msg) {
                    location.reload();
                }                       
            });
            }
        });
    });
$(document).ready(function(){
    $("a.iframeFancybox1").fancybox({
    'width'           : 800,
    'height'              : 650,
    'overlayOpacity'     :  '0.4',
    'overlayColor'       :  '#000',
    'hideOnContentClick' :   false,
    'autoScale'          :   false,
    'transitionIn'       :   'elastic',
    'transitionOut'  :   'elastic',
    'type'           :   'iframe'
    });
});

</script>

Il charge la page correctement et ne les choses. Mais au lieu de fermer la forme popup, il charge la forme source popup à l'intérieur du popup lui-même. Je veux fermer le formulaire popup lorsque le travail est terminé et retourner à la page de menu principal à partir de laquelle le popup a été généré. Comment puis-je atteindre cela sur un clic de bouton de la popup forme.

Salutations, Rangana

16
demandé sur Brad 2010-12-09 16:33:58

9 réponses

appel $.fancybox.close();

regardez aussi ces réponses dans le post

Selon http://fancybox.net/faq

  1. Comment fermer FancyBox à partir d'un autre élément? ?

appel $.fn.fancybox.close() sur votre événement onClick

alors vous devriez juste pouvoir ajouter dans le fn.

34
répondu Haim Evgi 2017-05-23 12:24:58

j'ai eu à utiliser parent.jQuery.fancybox.close() mon Drupal site pour que cela fonctionne correctement.

13
répondu Neil 2012-10-30 05:37:44

Vous pouvez utiliser inline appeler

<input type="button" onclick="$.fancybox.close()" value="CloseFB" />

ou vous pouvez utiliser la fonction appelée

<script>
function closeFB() {
    // Before closing you can do other stuff, like page reloading
    $("#destination_div").load("?v=staff #source_div_with_content"); 
    // After all you can close FB
    $.fancybox.close(); 
}
</script>

<input type="button" onclick="closeFB()" value="CloseFB" />
6
répondu Alex 2012-10-08 08:03:31

c'est un vieux fil, mais j'ai pensé partager mes deux cents.

j'avais des problèmes similaires avec la fermeture de la FancyBox iframe en utilisant l'événement onclick et après de nombreux essais, cela a fait le tour pour moi: fenêtre.parent.jQuery.fancybox.fermer()

voici un exemple utilisant un bouton d'entrée:

<input type="button" class="formbutton" value="Close" onClick="window.parent.jQuery.fancybox.close();" />

de plus, j'ai testé le onlick sur une étiquette anchor (a) et ça a bien marché.

3
répondu Jaz 2016-09-01 21:59:51

$.fn.fancybox.close() ne fonctionne pas pour la version 2.x, en fait, il génère une erreur. Si vous utilisez la version 2.x, essayez $.fancybox.close(true) à la place.

2
répondu silvenon 2012-10-15 14:18:28

en raison de mon bouton de fermeture a différentes fonctions: close popup, et fermer fancybox. Il doit utiliser l'e.stopPropagation() pour arrêter l'événement de propagation;

$('.close-btn').on('click', function(e) {
        e.preventDefault();
        e.stopPropagation();
        $(this).parent().hide();
        $.fancybox.close();
});
2
répondu Vladimir Kuzmin 2014-01-10 08:22:37

solution SIMPLE, trouver le lien pour fermer (il a une classe fancibox-close) et le faire en 6 secondes (ou 6000 milisecondes)

setTimeout(function(){
    $('.fancybox-close').click();
}, 6000);
1
répondu 2015-09-07 20:52:40

Cela fonctionne pour moi...

    <script type="text/javascript" src="../../js/jquery-ui.js"></script>

    <script src="../../js/fancybox-2.1.5/jquery.fancybox.js" type="text/javascript"></script>
    <script src="../../js/fancybox-2.1.5/jquery.fancybox.pack.js" type="text/javascript"></script>
    <link href="../../js/fancybox-2.1.5/jquery.fancybox.css" rel="stylesheet" type="text/css" />
    <script lang="javascript">
        var J$ = jQuery.noConflict();
        function SelectAndClose() {
            txtValue = document.getElementById('<%= _browseTextBox.ClientID %>').value;
            window.returnValue = txtValue.value;

            var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
            // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
            var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0+
            var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
            // At least Safari 3+: "[object HTMLElementConstructor]"
            var isChrome = !!window.chrome && !isOpera;              // Chrome 1+
            var isIE = /*@cc_on!@*/false || !!document.documentMode;   // At least IE6


            if (isIE == true) {
                //alert("iexcplorer");
                parent.J$.fancybox.close();
                //document.getElementById("closeFancyInternet").click();//For IExplorer
            }
            else {
                //alert("another one");
                document.getElementById("closeFancy").click(); //For Firefox
            }
            return false;
        }

        function closeBrowsing() {
            document.getElementById("closeFancy").click();
            window.close();
            return false;
        }


    </script>

Si vous souhaitez vérifier que votre navigateur doit voir ce lien: http://jsfiddle.net/9zxvE/383/

0
répondu Yemmill 2015-03-03 21:14:02

utiliser le bouton event close de fancybox:

document.getElementsByClassName("fancybox-item fancybox-close")[0].click();
-1
répondu Juan Carlos Lechuga 2015-11-27 00:44:17