Bonjour,
Ca fait une semaine que je galère pour faire ma validation ...

Ce que je veux faire :
J'ai un lien "envoyer à un ami" qui pointe sur une page de sorte Contact.
Je l'appel en Ajax mais quand je clique sur le bouton valider, il m'envoie sur la page en question alors que je voudrais rester dans mon popup !

Quelqu'un aurai une idée ?

Merci par avance

15 réponses


snap
Réponse acceptée

donc comme je le disait ce n'ai pas vraiment une popup c'est pour ça que ça ne reste pas "automatiquement" quand tu valide le formulaire.

tu peut deja faire ça pour que quand tu valide le formulaire ça ne quitte pas la page:
A rajouter a la fin du success()

$('#boxmail form').submit(function(){

event.preventDefault();
return false;
});

et rajouter de l'ajax dedans pour faire ce que le formulaire faisait a l'origine mais en ajax/

$('#boxmail form').submit(function(){
                $.ajax({
                    type:"POST",
                    data:{
    // Donnée envoyé par le formulaire
                    },
                    cache:false,
                    url:$(this).attr('action'),
                    success:function(d){
                        $('#boxmail').html(d);
                    },
                    error:function(d){
                    }
                })

event.preventDefault();
return false;
});

Comment mettre l'url "version cake"

url:"<?php echo $this->Html->url('/Sendmail', true); ?>",

sans plus d'explication ça va être dure de t'aider.

Peut-être un coup de chance : ajoute return false; à la fin de ta fonction (celle qui fait l'appel ajax)

Antho
Auteur

Merci pour ta réponse snap mais je ne peux pas faire comme tu dis.
Je ré-explique :
J'ai une page ou j'ai un lien "envoyer à un amis"
J'ai créer un nouveau comtroller,model et vu pour ça car je ne voulais pas l'avoir dans ma vu actuelle.
Je fait donc un appel ajax en cliquant sur le lien qui pointe sur la vu de mon nouveau controller en popup (jQuery).
Jusqu'à la tout ce passe bien.
Lorsque que je clique sur "envoyé" le traitement se fait sur la vu du nouveau controller au lieu de rester dans le popup que j'ai fait.

Ces explications sont elles plus claire ?

Merci d'avance !

Je ne comprends pas très bien. le traitement ne se fait pas dans une vue. explique plus précisément ce qu'il se passe quand tu clique et ce que tu voudrai qu'il se passe.

Antho
Auteur

Quand je clique, ca me renvoit sur ma vu alors que je voudrai le faire directement dans le popup

"return false" pour que le bouton n’exécute pas la redirection ? Enfin si j'ai bien saisi le problème.

Je lui est deja dit ça n'as pas l'aire d'être ça.

Sinon je comprends pas tres bien.
Ta une page A qui appel sur une popup une page B, quand tu click sur un lien la popup B la page A change???

Antho
Auteur

J'ai ma page A qui appelle bien ma page B en popup.
Quand je click sur le bouton envoyer, j'arrive sur ma page B au lieu de rester dans le popup.

Oui parce que tu n'as pas mis le return false; ou pas au bon endroit...

Antho
Auteur

Ok ok, mais alors où dois je le mettre ? Le je seche complet je comprend pas très bien ... :/

"Quand je click sur le bouton envoyer , j'arrive sur ma page B au lieu de rester dans le popup." Ou est le bouton envoyer (page Principal A ou dans la popup)? ou arrrive la page B ? (dans la popup ou dans la page tout entière?)

t'inquiète pas à force on va y arriver ^^

Antho
Auteur

Le bouton envoyer est dans ma page B qui est appeler en ajax et jquey pour faire mon popup.
Quand je clik dessus, j'arrive sur ma page B toute entière !`

Merci pour ton aide en tout cas !

Si il est appelé avec jquery en ajax il est pas dans une popup non? il serai pas plutot dans une dans une div dans la page A (une "dialog" de jquery, ou popup inline, différente des popup par default des navigateurs) ?? Si c'est le cas.

il faut apprés avoir charger ton formulaire lui rajouter un event

$('#FormQuiVientDeB').submit(function(){ 
//ce que tu veux
return false;
}

dans ce cas tu peut aussi nous montré le code qui appel la pageB en ajax et qui l'affiche dans la page A

On s'approche de la fin ^^!!

Antho
Auteur

Oui tu a raison je montre mon code ca sera certainement plus simple !!!
Par contre ne te fis pas à l'url car pour le moment je l'ai mis en dur car je n'arrive pas a le faire en "version" cake ...

$(document).ready(function(){ 
            $('a#mailfriend').click(function(event){
                event.preventDefault();
                $.ajax({
                    type:"GET",
                    cache:false,
                    url:"http://localhost/MyCooking/_www/cake/Sendmail",
                    success:function(d){
                        $('<div>').attr('id','boxmail').html(d).appendTo('#content');
                        $('<a>').attr('id','close').html('').appendTo('#boxmail');                      

                        boxHeight = '480';
                        boxWidth = '300';
                        marginHeight = ($(window).height()-boxHeight) / 2;
                        marginWidth = ($(window).width()-boxWidth) / 2;

                        $('#boxmail').css({'display':'block','height':boxHeight +'px','width':boxWidth +'px','position':'absolute','top':marginHeight,'left':marginWidth,'z-index':'200','background':'white','border':'2px solid #000000'});

                        $('#close').css({'cursor':'pointer','top':'0','position':'absolute','right':'0','background':'url(../img/close.png)','height':'30px','width':'30px'});

                        //Au clic sur le bouton
                        $('#close').live('click', function(e) {
                            e.preventDefault();
                            $('#boxmail').remove();
                            return false;
                        });
                    },
                    error:function(d){
                    }
                })
                return false;
            });
        });
Antho
Auteur

Désolé pour le retard mais je n'ai pas pu essayé avant ... :(

Merci Snap !

J'ai quelque chose qui commence a voir le jour ! Reste quelque beug pour l'appel de la page et l'envoie du mail mais je devrais y arriver !

Merci beaucoup ;)