2010-03-09 5 views
0

ayant de vrais problèmes avec jquery en ce moment. Fondamentalement ce que j'ai jusqu'ici est. Le formulaire est soumis une fois que le formulaire est soumis une boîte grise apparaît avec les informations pertinentes. Ce que j'ai besoin de faire est d'actualiser toute la page, puis de laisser apparaître la case grise.simple gestionnaire d'événements jquery

J'ai le code suivant

$("#ex1Act").submit(function() { 
     //$('#example1').load('index.php', function()         
     $("#example1").gbxShow(); 
     return true; 
     }); 

la ligne qui est commenté la page de charge à nouveau après l'envoi du formulaire l'autre code rend le pop-up boîte grise.

est leur façon de dire une fois que le:

$('#example1').load('index.php', function() 

a été exucted faire ceci:

$("#example1").gbxShow(); 

espoir ce sens.

+1

Mais si votre formulaire est soumis et que toute la page est rechargée, le code qui existait auparavant disparaîtra ... – Pointy

Répondre

2

Ceci n'est pas possible.

Une fois le formulaire soumis, le Javascript qui s'exécute sur la page qui a envoyé le formulaire a complètement disparu; il ne peut pas affecter la page que le formulaire retourne. Au lieu de cela, vous devez placer le code côté serveur sous la forme qui écrit $("#example1").gbxShow(); dans un bloc séparé <script> si le formulaire a été soumis.

+0

À la relecture de la question qui vous intéresse, cette option de chargement n'aide pas du tout , woops. –

1

Le problème que vous avez est que la page Web est "sans état". Cela signifie que vous ne pouvez pas faire un peu de JavaScript, actualisez la page et continuez avec votre JavaScript. Lorsque vous actualisez la page, vous perdez votre état actuel et la page commence à partir de zéro.

Vous aurez besoin de réorganiser votre conception pour tenir compte du cycle de vie de la page (c'est-à-dire que tout le code JavaScript s'arrête définitivement en cours de navigation). Une solution peut être d'utiliser le plugin jQuery AJAX forms, qui soumettra le formulaire au serveur et vous rendra le résultat de la soumission, ce qui évitera de briser le cycle de vie de la page. Vous pouvez ensuite afficher la boîte comme vous le souhaitez.

0

La méthode standard consiste à demander au serveur de renvoyer le contenu de la boîte grise dans la réponse à la publication.

Vous pourriez probablement faire cela en jquery en mettant la page et la boîte grise dans iFrames séparés de sorte qu'il serait à l'abri de la page rafraîchir

2

Pourquoi ne pas simplement soumettre le formulaire normalement (et non en utilisant JavaScript) et ajouter une variable à la page résultante signalant la nécessité d'afficher la boîte grise? Comme si:

<?php if(isset($_POST['submit'])): ?> 
    <script type="text/javascript"> 
     var showGreyBox = true; 
    </script> 
<?php endif; ?> 

...

<script type="text/javascript"> 
    $(function(){ 
     if(showGreyBox !== undefined){ 
      // execute code to show the grey box 
     } 
    }); 
</script> 

Quelque chose comme ça, peut-être?