IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

onclick="return false" ne fonctionne pas


Sujet :

ASP.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut onclick="return false" ne fonctionne pas
    Bonjour à tous,

    dans une page aspx, au clic d'un bouton j'ouvre une pop up.
    Selon ce qui est effectué dans cette dernière je poste ou non la page.

    mais malgré que la valeur de retourde l'action onclick="return false" sur mon bouton, la page se poste à chaque fois.


    Quelqu'un aurait-il une idée.

    D'avance merci.

    Je précise que je travaille en asp.net 2.0

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Fais voir ton code

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
            function NewNode_OnClick()
                {
                    try
                    {
                        var hiddenNodeName = $("returnNodeName"); 
                        var hiddenInfo = $("hidObjTypeId");                
                        var returnValue = ShowModalWindow('addNode.aspx?objectTypeId=' + hiddenInfo.value.split('|')[0] ,hiddenInfo.value,400,300);
     
                        if(!returnValue)
                        {
                            return false;
                        }
                        else
                        {
                           hiddenNodeName.value = returnValue.nodeName;
                           hiddenInfo.value = returnValue.objectTypeId;
                           return true;
                        }
                    }
                    catch(ex)
                    {
                        alert('erreur : ' + ex.toString());
                        return false;
                    }
                }

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    faut le faire en javascript, pas en code behind, sinon y aura forcement un PostBack

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    mais c'est du javascript

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    Si j'ai bien compris tu voudrais que suivant ce qui est fait il y aie un Postback ou rien du tout, c'est ca?

    Pour gerer les postback en aspx, soit tu utilises la propriété autopostback="true" dans tes controles, auquel cas il ya aura TOUJOURS un postback, soit tu dois redéfinir toi meme une fonction postback personnalisée en javascript que tu pourras appeler quand tu veux depuis ton code javascript.

  7. #7
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par pcdj Voir le message
    mais c'est du javascript


    Et tu appelles cette fonction sur le OnClientClick de ton bouton?

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    Citation Envoyé par lutecefalco Voir le message


    Et tu appelles cette fonction sur le OnClientClick de ton bouton?
    oui, c'est vrai que j'ai oublié de préciser ça.

    Citation Envoyé par Flamby38 Voir le message
    Si j'ai bien compris tu voudrais que suivant ce qui est fait il y aie un Postback ou rien du tout, c'est ca?

    Pour gerer les postback en aspx, soit tu utilises la propriété autopostback="true" dans tes controles, auquel cas il ya aura TOUJOURS un postback, soit tu dois redéfinir toi meme une fonction postback personnalisée en javascript que tu pourras appeler quand tu veux depuis ton code javascript.
    oui ça je sais, mais ici, ce n'est pas ce qu'il s'agit.

    Au clic du bouton, j'intercepte ça coté client, j'ouvre une pop up. Et selon ce que me retourne cette pop up, je poste ou non la page.
    Ici dans les 2 cas, la page est postée.
    Et pourtant, j'ai placé des debugger dans le code et tout se déroule normalement. Le "return false" n'empêche pas le postback de la page...


    Mais en tout, merci de vous pencher sur mon problème...

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    Au clic du bouton, j'intercepte ça coté client, j'ouvre une pop up. Et selon ce que me retourne cette pop up, je poste ou non la page.
    Ici dans les 2 cas, la page est postée.
    A mon la solution est donc de creer ta propre fonction postback en javascript.

    Tu crees un bouton web classique ( c'est à dire pas asp ), tu lui ajoutes la propriété onclick="mon_traitement_en_javascript()".

    dans ta fonction mon_traitement_en_javascript() tu mettras un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (condition == true ) {
    postback();
    }
    else
    {}
    et tu crees une fonction postback() dans laquelle tu mets la commande Form.submit();

    Note que tout se fait en javascript sur la page .aspx, il n'y a rien en codebehind.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    j'ai déjà une fonction qui remplace le postback en fin de page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <script language="javascript"  type="text/javascript">
     
        this.__myDoPostBack = function(eventTarget, eventArgument)
        {
            if(eventTarget != 'test2')
            {
               this.__doPostBack = this.__keepdoPostBack ;
               form1.submit();
            }
        } 
        if(this.__doPostBack){
            this.__keepdoPostBack = this.__doPostBack; 
            this.__doPostBack = this.__myDoPostBack;
        }
    </script>
    et le pire, c'est qu'après le clic sur ce fameux bouton,il ne passe pas par là...

    Et puis de toute façon, il doit y avoir un moyen de régler ce soucis. ce n'est pas normal. Car je pense l'avoir déjà fait de cette manière et ça marchait....

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    dans ta page .aspx, est ce que tu es sur de ne pas avoir utilisé un <asp:button> , qui te fera un postback automatique?

    ce que tu dois utiliser est un <input type="button">, qui lui, ne fait pas de postback (sauf si la fonction javascript derriere en effectue un bien sur).

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    si si, c'est un asp:button, car justement en plus du javascript, je dois effectuer un traitement coté serveur au clic de ce bouton, donc j'ai utilisé celui là.

    Mais je sais qu'il y a quand même moyen d'empêcher le postback, je l'ai notamment vu dans une video explicative du ajax control toolkit de microsoft.

    Ils procédaient de la même manière, avec un onClientClick="return false"
    et ça marchait

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    si tu le dis, c'est peut etre vrai.

    Moi d'après mon experience, un asp:button fera toujours un postback, c'est le comportement normal, a mon avis ce qui se passe sur ta page est normal.

    Quand je veux executer du script java et du VB.NET sur un meme bouton, je cree un <input type="button">, je branche ma fonction javascript dessus et j'appelle mon code VB.NET depuis le javascript.

    je ne sais pas faire autrement, ca ne veut pas dire que c'est impossible, juste que je ne peux pas t'aider, désolé.

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    comment appelles-tu ton VB.NET depuis le javascript ?

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    ben c'est carrément lourd a faire parce que c'est pas prévu pour ca, mais voila la methode que j'utilise ( un peu longue certes mais efficace ).

    je mets en premier dans ma page aspx:

    2 input qui n'apparaissent pas mais servent pour la fonction postback() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET"> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT">
    ma fonction postback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     function PostBack(eventTarget, eventArgument) {
    Form1.__EVENTTARGET.value = eventTarget;
    Form1.__EVENTARGUMENT.value = eventArgument;
    Form1.submit();
    }
    ensuite je cree mon bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" onclick="code_js()">
    ensuite je cree mon code javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function code_js {
    //mon code javascript a executer avabnt le code vb.net
    PostBack("toto","123")
    }
    ensuite dans la fonction page_load() en VB.NET, je rajoute les lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if __EVENTTARGET.value = "toto" then
    ma_fonction_vb()
    end if

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    c'était tout simplement une grosse erreur de ma part.

    je faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnClientClick="NewNode_OnClick();"
    alors qu'il fallait faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnClientClick="return NewNode_OnClick();"
    j'avais oublié le return.
    J'en avais bien un dans ma fonction mais pas un directement dans l'événement.

    Enfin, voilà, merci à ceux qui ont manifesté de l'intérêt pour mon souci
    et puis ben Flamby38 maintenant tu sais comment procéder

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    ah bon ben je vois que tu as trouvé une solution, c'est le principal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. return false qui n'empeche pas la redirection
    Par artenis dans le forum jQuery
    Réponses: 11
    Dernier message: 03/05/2011, 14h10
  2. Réponses: 3
    Dernier message: 02/09/2007, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo