2010-08-25 6 views
0

J'ai des liens sur ma page qui, lorsqu'on clique dessus, ouvre une fancybox. A l'intérieur de la fancybox, il y a quelques boutons d'action (comme "close item", "delete item"). Lorsque ces boutons sont cliqués, je veux qu'il soumette le formulaire comme d'habitude, puis fermez la fancybox. Comment puis-je l'adapter pour faire cela sans interférer avec le POST?Fermer FancyBox après l'action?

Remarque: Je n'utilise pas Ajax.

Répondre

2

Si votre arrière retourne quelque chose, par exemple le mien échos « envoyé » à la fin, vous pouvez le faire:

$.post("php/send_mail.php", function(result){ 
    if(result == 'sent'){ 
    //$('#success').slideDown('slow'); -My code 
    //$('#submit').hide(); -My code 
    $.fancybox.close(); 
    } 
}); 

seulement dans votre cas, vous voulez faire .fancybox.close $()

Si vous le faites via $ .ajax au lieu de .post, vous pouvez utiliser success: à la place.

Désolé, cela ne fonctionne pas.

1

Mark,

Quand vous dites effectuer le post, je suppose que vous voulez dire que vous voulez que le fancybox fermé dès que la demande est envoyée (ou aussi près que possible du temps)? Je suppose que vous numérotez des pièces de la fancyBox dans le cadre du POST et que vous ne voulez pas le fermer trop tôt.

Dans ce cas, je l'effet de levier le rappel jQuery.ajax beforeSend pour fermer la boîte juste avant la demande est envoyée:

$.ajax({ 
    beforeSend: function() { 
    //close fancybox here 
    } 
}); 

Le XMLHttpRequest est créé à ce moment-là, donc il ne devrait pas être tout effet sur la demande.

--Andrew

+0

Non ... Je ne ont pas besoin de sérialisation quoi que ce soit. Et il n'utilise pas jQuery.ajax. C'est une forme ancienne normale. Je pense que lorsque vous cliquez sur le bouton, il faut aller à l'effectuer le '

' qui est une redirection droite? Ensuite, je ne sais pas où mettre le crochet. Mais je suppose que je pourrais ajaxify le bouton et on-complete fermer fancybox? – mpen

0

Que diriez-vous cacher la forme, déplacer l'élément de forme sous l'élément du corps, puis appeler form.submit().

0

Je ne suis pas sûr de comprendre votre problème mais je remarque quand fancybox s'ouvre avec de nombreux liens, des boutons créés dynamiquement dans la propriété title de fancybox, ces éléments ne sont pas dans le DOM de votre page. Et vous ne pouvez pas interagir avec l'élément de votre page.

Je ne sais pas comment vous créez vos boutons d'action (comme « point proche », « supprimer le point »), peut-être vous devriez expliquer cela, pour nous aider à vous aider :)

0

J'ai eu le même problème que vous avez.J'ai une bonne solution comme ci-dessous. si je l'utilise après php comme d'habitude pour CodeIgniter

'<?php 
if ($this->input->post()) 
    { 
*after finishing the action use the below code 

echo "<script> parent.jQuery.fancybox.close(); </script>"; 

}' 
?> 
//if you want to refresh the parent window use parent.location.reload(); before close the //fancy box 
Questions connexes