Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/05/2011, 17h40   #1
Invité de passage
 
Inscription : janvier 2010
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 2
Points : 0
Points : 0
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 :
 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 :
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 :
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 !
Hippooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 18h09   #2
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
En voyant ça :
Citation:
Envoyé par Hippooo Voir le message
Code :
 document.getElementById(promId+'')).value +=  promContent;
...on se dirait "manque une parenthèse" mais l'extrait plus bas est différent :
Code :
(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

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 19h35   #3
Invité de passage
 
Inscription : janvier 2010
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 2
Points : 0
Points : 0
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 :-/
Hippooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 19h56   #4
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 933
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 933
Points : 4 756
Points : 4 756
Bonjour,
Citation:
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 :
<?php echo "<textarea id=\"promoContent\" name=\"promoContent\" class=\"element textarea small\"><?php  echo AppletInstance::getValue('promoContent'); ?"; ?></textarea>
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/05/2011, 21h34   #5
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
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 :
<input type='text' value="ceci est la valeur de l'input" />
pour modifier la valeur on utilise l'attribut valeur
Code html :
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 :
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 00h14   #6
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Sekaijin, tu as testé ce que tu affirmes ? :/
http://www.w3.org/TR/DOM-Level-2-HTM...ml#ID-70715579
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 12h16   #7
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
test.html :
Code html :
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 14h56   #8
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Je viens de tester ça sous FF et IE9 et ça marche itou.
Code HTML :
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 ?
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 16h59   #9
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h41.


 
 
 
 
Partenaires

Hébergement Web