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

JavaScript Discussion :

Argument de fonction "undefined"


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 151
    Par défaut Argument de fonction "undefined"
    Bonjour !

    J'utilise au niveau de mon formulaire une fonction javascript chargée d'efectuer une petite vérification des différents champs de la page, puis d'enregistrer 2-3 infos dans un cookie (notamment le nombre d'éléments à afficher par page), chaque page (client, commande, ...) ayant son propre cookie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" name="<?php echo $this->form['name']; ?>" action="<?php echo $this->form['action']; ?>" onsubmit="return submitForm('<?php echo $this->form['name']; ?>', '<?php echo $this->name; ?>');">
    qui me donne une fois la page HTML générée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form ... onload="return submitForm('form1', 'client');">
    Le problème, c'est que dans ma fonction javascript, quand je récupère mon 2ème argument, il est marqué comme "undefined" :
    Le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function submitForm(formName, cookieName)
    {
        alert('formName = '+formName+'\ncookieName = '+cookieName);
        ...
    }
    m'affiche :
    formName = form1
    cookieName = undefined
    J'ai du mal à comprendre comment le 2ème argument, qui est pourtant bien affiché dans la page HTML, puisse se retrouver "undefined". Je n'ai pas eu ces problèmes sur les autres fonctions javascript que j'ai utilisée, donc qu'est-ce qui peut bien faire la différence sur celle là ?
    Là dessus, je bloque complètement ! C'est peut-être un tout petit détail complètement con, mais sur le coup, je vois pas !

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    peux-tu faire un "vrai" copier/coller du code généré (HTML + JS), récupéré dans ton navigateur.
    Ce n'est pas le cas ici (l'évènement n'est pas le bon), et ça peut cacher une erreur toute bête ...

    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 151
    Par défaut
    La page est un peu longue pour être affichée en entier !
    En voici une petite partie :
    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
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <script type="text/javascript" src="function.js"></script>
            <script language="Javascript">RedirectToFrame();</script>
        <link href="style.css" rel="stylesheet" type="text/css"/>
        </head>
        <body>
        <div class="mainPage">
            <div class="mainPageImg">
                <div class="mainPageIconCarte"></div>
                <span class="mainPageText">Recherche de clients</span>
            </div>
            <div class="mainPageAdd"><a href="client_add.php" class="link">Ajouter un client</a></div><br /><div class="mainPageAdd"><a href="client_duplicate.php" class="link">Dupliquer un client</a></div><br /><div class="mainPageAdd"><a href="client_delete.php" class="link">Supprimer un client</a></div><br />            <br />
                        <form method="post" name="form1" action="client_search.php" onsubmit="return submitForm('form1', 'client');">
                        ...
                        </form>
                    </div>
            </div>
            </div>
        </body>
    </html>
    function.js :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    ...
     
    function submitForm(formName, cookieName)
    {
        alert('formName = '+formName+'\ncookieName = '+cookieName);
     
        var filter_nb = document.forms[formName].elements['filter_nb'].value;
     
        var isValid = true;
     
        /*
            Vérification des champs
        */
     
        if(isValid)
        {
            setCookie('setPerPage_'+cookieName, document.forms[formName].setPerPage.value, 7 /* days*/);
            document.forms[formName].submit();
        }
        else
        {
            return false;
        }
    }
     
    function setCookie(name, value, days) {
        //alert('name = '+name+'\nvalue = '+value+'\ndays = '+days);
     
        var expire = new Date ();
        expire.setTime (expire.getTime() + (24 * 60 * 60 * 1000) * days);
        document.cookie = name + "=" + escape(value) + "; expires=" +expire.toGMTString();
    }
     
    ...
    PS : oups ! Comment j'ai pu marquer onload au lieu de onsubmit ?!

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Aucune raison, a priori, effectivement.
    Si tu appelles la même chose sur un simple bouton (au lieu du onsubmit), ça donne quoi ?


  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 151
    Par défaut
    Quand je teste sur avec un "button", il m'affiche bien les 2 arguments.
    A se demander s'il y n'a pas des règles spéciales pour le <form> onsubmit.
    Je peux bien contourner le problème en mettant un champ hidden, mais j'aimerais bien trouver une solution un peu plus "propre" .

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