Comment fermer fancybox de fenêtre enfant?
lien parent:
<a href="feedback.php" id="feed">Provide your feedback here</a>
jQuery code pour initier fancybox est...
$("#feed").fancybox();
codes feedback.php...
<html>
<head>
<script language="javascript">
$(document).ready(function(){
$("#feed_submit").click(function(){
//Name is alerted
alert($("#name").val());
//code to close fancy box(Not working)
$.fancybox.close();
});
});
</script>
</head>
<body>
<form method="post" name="feedback" id="feedback" action="">
<div>
<label>name</label>
<input type="text" name="name" id="name"/>
</div>
<div>
<label>feedback</label>
<input type="text" name="content" id="content"/>
</div>
<div><input type="button" name="feed_submit" id="submit" value="submit"></div>
</form>
</body>
</html>
Une fois de soumettre le bouton est cliqué, j'ai besoin de fermer la boîte de fantaisie dans cette page avec jquery
j'ai essayé d'utiliser
$.fancybox.close();
parent.$.fancybox.close();
Mais cela ne fonctionne pas pour moi. Si il y a une option pour fermer à l'intérieur de cet ajax formulaire s'il vous plaît laissez-moi savoir.
- Pouvez-vous nous montrer le reste de votre code?
- Je pense que c'est tout le code.
- fonctionne pour moi $.fancybox.close(); thnx, j'étais à la recherche de ce 😀
Vous devez vous connecter pour publier un commentaire.
Le code suivant devrait de travail, et a travaillé pour de nombreuses personnes
Cependant, j'ai aussi vu, par exemple dans cette question, jQuery en cours d'exécution en mode noConflict, à l'insu de l'utilisateur. Si c'est le cas pour vous, vous devez modifier votre script à
Si aucun de ces travaux, veuillez utiliser un outil comme Firebug pour Firefox, ou la console développeur de google Chrome pour voir si il y a un message d'erreur, et de rendre compte de ce que c'est.
Essayer
en supposant que
$.fancybox.close();
travaille dans la fenêtre parent.window.opener
.window.parent
dans votre réponse? Vous avez fait quelque chose comme ça et pense toujours que fancybox ouvre un div et pas une autre fenêtre(iframe) dans ce cas?window.opener
.window.opener
ne fonctionne pas, car seuls les fenêtres popup avoir un ouvre-boîte. Rien d'autre n'est pas ouvert dans le même sens. Si oui ou non il ressemble à une fenêtre dans le design est quelque chose que l'iframe n'est pas conscient. Le problème avec noConflict est qu'il est souvent utilisé dans des endroits comme WordPress, sans que le développeur le savoir, et enveloppé, de sorte que le$
peut encore être utilisé;(function($) { $.fancybox.close(); /* this will work */ })(jQuery);
Essayer:
Lorsque vous utilisez fancybox avec type: iframe, dans l'iframe boîte, vous devez insérer vos bibliothèques comme jquery etc. Puis fermer à l'iframe de fantaisie boîte tout usage parent.$.fancybox.close()
Rappelez-vous fancybox avec le type "iframe" s'ouvre dans une nouvelle fenêtre, fancybox avec d'autres types s'ouvre dans la même fenêtre.
Face au même problème, c'est la seule solution que j'ai pu trouve qui a fait le tour:
le code lui-même est:
il s'exécute dans une fonction en tant que telle:
espère que cela aide,
Naore
fait ce travail ?
//sur la fenêtre enfant ou de l'iframe mettre cette fonction:
function closeIframe(){
parent.closeIframeMain();
}
//et ce lien pour fermer cette fenêtre
<a onclick="closeIframe();" href="#">Close window</a>
//puis sur la fenêtre parente mettre cette fonction:
function closeIframeMain(){
jQuery("#fancybox-close").trigger("click");
}
Ça marchera à coup sûr, il suffit de copier et coller:
<a href="javascript:;" onclick="jQuery('.fancybox-close').fancybox().trigger('click');">Close from Inside</a>
En fait, il déclenche bouton fermer si fancybox lui-même, qui fonctionne dans la majorité des cas.
Amusez-vous avec la programmation 🙂
J'ai eu le même problème, mais avec ASP.NET.
Fondamentalement, sur une page, je suis de l'ouverture d'une page (avec un contrôle de formulaire à l'intérieur) comme ceci:
Lorsque je clique sur fermer dans la FancyBox, cela fonctionne, mais si je la soumettre d'abord, PUIS fermez, la
fancyBox
ne se referment pas, même toi, la page est dans le même domaine.En fin de compte, j'ai découvert que vous devez définir la propriété autoSize:false lorsque vous ouvrez la FancyBox:
Il devrait maintenant fonctionner. S'il vous plaît répondre si cela fonctionne pour n'importe qui d'autre. Des acclamations.
Sera
parent.jQuery.fancybox.close();
avec .$. - creashes dans IE8.
Avec cette - tous ok.