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 :

Modifier dynamiquement le contenu d'un Textarea selon requete SQL


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Modifier dynamiquement le contenu d'un Textarea selon requete SQL
    Bonjour, a tous !
    tout d'abord, je vous prie de bien vouloir excuser le manque d'accents et les eventuelles coquilles de ce message; j'ecris depuis un clavier QWERTY et ne maitrise pas vraiment la bete.
    Ensuite, j'aimerais poser une question a ceux qui s'y connaissent en Javascript, et accessoirement en PHP:

    Je suis en train d'ajouter des fonctionnalites a une application, et je me retrouve confronte a la situation suivante : j'aimerais qu'un champ textarea soit modifie dynamiquement selon le choix fait par l'utilisateur sur un menu deroulant Select.
    Je stocke donc mes differentes valeurs (recuperees depuis une requete SQL) dans les "value" des options de mon select, et ajoute une fonction onChange sur le Select pour ;odifier le textarea dynamiquement.
    A priori tout devrait fonctionner. Je sais que ma fonction javascript se lance, je sais que les "value" ne sont pas nulles, et j'ai utilise un code quasiment identique sans probleme sur une autre page PHP. Et pourtant, le textarea n'est jamais modifie. I lreste desesperement vide.
    Il me semble donc que c'est la ligne suivante de mon code qui pose probleme (alors meme que c'est un copier/coller d'une ligne qui fonctionne sur une autre page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     document.getElementById(promId+'')).value +=  promContent;
    les variables promId et promContent sont correctement renseignees... bref, je ne vois vraiment pas ce qui coince.
    Quelqu'un connaitrait-il une raison qui puisse expliquer le non fonctionnement de cette affaire ?
    Comme je modifie une application (OpenSource, hein) je ne maitrise pas tout l'environnement, et je suis debutant en javascript, quelque evidence ;'aura peut-etre echappe ?

    Je devrais peut-etre poster le code dans son integralite, ca clarifiera peut-etre les choses :

    PHP :
    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
     
    <h2>Send Promo</h2> 
      <p>Enter the Promo Code of the Promotion you wish to send to the client.</p> 
      <?php $txt = "promoContent"; 
      echo "<select class=\"small\" name=\"promo\" onChange=\"addPromo('promoContent', 'this.options[this.selectedIndex].value');\" >";   
       
        echo "<option value=\"{$promo}\" ></option>"; 
        while($table=mysql_fetch_row($promos)) 
        { 
         echo "<option value=\"{$table[1]}\" >$table[0]</option>"; 
        } 
        
      echo "</select>"; ?> 
      <fieldset class="vbx-input-container"> 
      <?php echo "<textarea id=\"promoContent\" name=\"promoContent\" class=\"element textarea small\"><?php  echo AppletInstance::getValue('promoContent'); ?"; ?></textarea>  
      </fieldset>
    Javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function addPromo(txt, promo) { 
     alert("test 1"); 
     (document.getElementById(txt+'')).value +=  promo; 
     alert("test 2"); 
    }
    Voila voila... quiconque saura m'aider aura toute ma reconnaissance !

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    En voyant ça :
    Citation Envoyé par Hippooo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     document.getElementById(promId+'')).value +=  promContent;
    ...on se dirait "manque une parenthèse" mais l'extrait plus bas est différent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (document.getElementById(txt+'')).value +=  promo;
    il ne "manque" plus de parenthèses... il y en a deux en trop du coup (voir en rouge)

    ...mais bon a priori ce n'est pas la cause du problème
    (si tu pouvais poster le code généré ça serait plus commode que le code serveur)

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci de la reponse rapide !

    Oui, effectivement, j'ai fait plusieurs tentatives avec des syntaxes differentes, et mes deux copier/coller ne provenaient pas de la meme source.

    Le code source de la page fait 6000 lignes, je ne suis pas sur d'etre capable d'extraire seulement les informations pertinentes :-/

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    Je devrais peut-etre poster le code dans son integralite, ca clarifiera peut-etre les choses :
    NON commences par regarder si le code HTML généré est conforme au niveau de ton problème.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo "<textarea id=\"promoContent\" name=\"promoContent\" class=\"element textarea small\"><?php  echo AppletInstance::getValue('promoContent'); ?"; ?></textarea>

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    normal un textArea ne modifie pas son contenu avec l'attribut value
    c'est le contenu du tag qui contient sa valeur
    sur un input la valeur est dans value
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='text' value="ceci est la valeur de l'input" />
    pour modifier la valeur on utilise l'attribut valeur
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <textarea
       value="ceci n'est pas la valeur du textarea">
    ceci est la valeur du textarea
    </textarea>
    ici en modifiant l'attribut tu ne modifie pas sa valeur mais juste l'attribut value.

    il vaut donc modifier le contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //suppression du contenu.
    textAreaEl = document.getElementById(txt+'');
    while (textAreaEl.hasChild()) {
      textAreaEl.removeChild(textAreaEl.firstChild)
    }
    //ajout nouvelle valeur.
    textAreaEl.appendChild(document.createTextNode(promo);
    A+JYT

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Sekaijin, tu as testé ce que tu affirmes ? :/
    http://www.w3.org/TR/DOM-Level-2-HTM...ml#ID-70715579
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    test.html :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <html>
     <textarea id='id' value='45'>toto</textarea>
     <button onclick="alert(document.getElementById('id').value)" >alert</button>
     <button onclick="ta = document.getElementById('id'); ta.removeChild(ta.firstChild); ta.appendChild(document.createTextNode('autre valeur'))" >change</button>
    </html>

    click sur "show" affiche 'toto' et non '45'
    click sur "change" affiche 'autre valeur' dans le textarea
    click sur "show" affiche 'autre valeur'

    A+JYT

  8. #8
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je viens de tester ça sous FF et IE9 et ça marche itou.
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <html>
    <textarea id='id' value='45'>toto</textarea>
    <button onclick="alert(document.getElementById('id').value)">alert</button>
    <button onclick="document.getElementById('id').value = 'autre valeur'">change</button>
    </html>
    Est-ce qu'il s'agit d'un problème avec les vieilles versions d'IE ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  9. #9
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    possible
    je sais que par le passé ça posait problème

    il y a très longtemps que je ne me suis pas posé la question
    A+JYT

Discussions similaires

  1. Modifier dynamiquement le contenu d'une TitleList
    Par Nexussmb dans le forum Flex
    Réponses: 8
    Dernier message: 24/08/2009, 17h54
  2. Réponses: 0
    Dernier message: 06/03/2008, 16h14
  3. [Débutant] Modifier dynamiquement le contenu d'une JFrame
    Par FabaCoeur dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 27/10/2007, 18h08
  4. Réponses: 1
    Dernier message: 04/06/2007, 10h23
  5. Modifier dynamiquement le style d'un textarea
    Par AlLutun dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/11/2004, 15h18

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