J'utilise la fonctionnalité en ligne ColorBox et j'ai créé un bouton que j'ai défini pour fermer la fenêtre lorsque vous cliquez dessus:

$('.closebutton').live('click', function(){
        $.fn.colorbox.close();
    });

J'ai une autre fonction que je veux exécuter lorsque le bouton est cliqué, j'ai donc utilisé:

<button class="closebutton" onclick="myFunction();">Close</button>

Le problème est que ma fonction ne fonctionne pas ci-dessus.

Des idées s'il vous plait?

MISE À JOUR:

Voici où se trouve le code:

<script type="text/javascript">
jQuery(document).ready(function() {
    $(".inline").colorbox({inline:true, width:"50%"}); //for colorbox inline
    $('#cboxClose').remove(); //remove popup window close button

    $('.closebutton').live('click', function(){
        $.fn.colorbox.close();
        myFunction();
    });

L'ajout de myFunction(); avant ou après $.fn.colorbox.close(); ne fonctionne pas

Code myFunction: (Cela va après le code ci-dessus sur la page)

<script type="text/javascript">
function myFunction() {
    $("#ajax-form").submit(function(){
        $.post("update.php",
        $("#ajax-form").serialize(),
            function(data){
                $('#jqm').attr('src', 
                $('#jqm').attr('src'));
            }
        );
        return false;
    });
}
</script>

MISE À JOUR 2:

Je vais essayer de mieux expliquer: j'ai un formulaire et une entrée sur la page principale qui fonctionne, alors quand vous ajoutez du texte dans la zone de saisie et que vous soumettez, puis formez, la valeur de l'entrée est soumise. Maintenant, lorsque je mets cette même entrée dans la zone en ligne de colorBox afin qu'elle apparaisse dans la fenêtre contextuelle, la valeur n'est pas soumise. J'ai essayé de saisir les erreurs JS sur le sac de feu, mais je n'y vois rien. J'espère que cela t'aides.

0
Satch3000 28 oct. 2011 à 00:30

4 réponses

Meilleure réponse

Pourquoi ne pas simplement ajouter myFunction() avant $.fn.colorbox.close();? De cette façon, vous pouvez être sûr de l'ordre dans lequel les choses sont traitées.

1
Niet the Dark Absol 27 oct. 2011 à 20:32

Je crois que le problème est que myFunction() (l'attribut onClick) est remplacé par jQuery. Si vous voulez que votre fonction s'exécute chaque fois qu'un .closebutton est cliqué, utilisez simplement:

$('.closebutton').live('click', function(){
        $.fn.colorbox.close();
        myFunction();
});

Si c'est uniquement pour ce bouton, essayez d'ajouter un identifiant à ce bouton et:

$('.closebutton').live('click', function(){
   $.fn.colorbox.close();
   if($(this).attr('id') == 'exampleID')){
      myFunction();
   }
});
0
Joey 27 oct. 2011 à 20:37

Ok donc, après avoir lu votre mise à jour # 2, je comprends qu'en fait votre problème n'est pas que le code myFunction ne s'exécute pas correctement.

Le problème est que vous avez déplacé votre entrée dans la colorbox, donc sa valeur ne se soumet pas avec le formulaire, ce qui est normal car l'entrée est maintenant en dehors du formulaire.

Vous pouvez soit simplement déplacer l'intégralité de votre formulaire dans la colorbox, soit utiliser javascript pour copier la valeur de l'entrée que vous avez déplacée en dehors de votre formulaire dans une entrée masquée.

0
Leo 29 oct. 2011 à 15:46

Au lieu d'utiliser le javascript en ligne, vous pouvez simplement faire quelque chose comme ceci:

$('.closebutton').live('click', function(){
    $.fn.colorbox.close();
    myFunction();
});
1
Leo 27 oct. 2011 à 20:33
7921976