Page 1 sur 1

Modif champ texte par rapport à liste déroulante

Posté : 28 janv. 2014, 13:23
par synergie
Bonjour,

Je suis confronté à ce problème depuis assez longtemps...
Je cherche à modifier la valeur d'un champ texte dynamiquement par rapport à ma liste déroulante.

voici ma liste déroulante, composé de 24 choix :
  <label for="lstInterface">Choix de l'interface : 
  <select name="nomInterface" id="nomInterface" size="1">  
    <?php 
    
    for($i=1;$i<=24;$i++)
    {
       echo "<option value=".$i.">interface fastEthernet 0/".$i;
       echo "</option>";
    }
    
    ?>
  </select>
  </label>
  <br />
  <br />
  <label for="txtDesc">Description : 
  <input type="text" name="txtDesc" id="txtDesc"> 
  </label>
Je dois mettre en valeur de la description, une variable de session initialisé sous la forme $_SESSION['descriptionX'], X étant compris entre 1 et 24.
J'ai donc essayé plusieurs façons, en vain. Je me tourne donc vers vous :

J'avais essayé de faire ça :
onchange="getElementById('txtDesc').value = <?php echo $_SESSION["description1"]; ?>"

Mais, mêler du javascript et du php, c'est assez périlleux :s

J'espère que vous aurez compris ce que je veux faire et je suis preneur de pistes.

Merci

Re: Modif champ texte par rapport à liste déroulante

Posté : 28 janv. 2014, 14:37
par Spols
Tu ne sais pas mélanger si facilement le php et le javascript, il faut bien comprendre qu'il s'éxécute l'un après l'autre

dans ce cas précis, je vois plusieurs manières de faire :
creer en php 24 fois le champs description, les cacher par défault et à chaque changement su select, les cacher tous et afficher le bon
faire écrire par php un tableau javascript contenant les descriptions et le onChange envoi la valeur tableau[value]

J'essaierais aussi mais sans certitude que ça marche:
ajouter à chaque option un champs desc le remplir avec php et le récupérer par javascript avec this.desc

Re: Modif champ texte par rapport à liste déroulante

Posté : 28 janv. 2014, 15:52
par moogli
salut,

+1 pour l'attribut (genre data-dec). voir comment tu peu l'utiliser en JS.

sinon la classique requête ajax sur l'event on change de la combo fonctionne plutôt bien et t'éviter de monter des trucs scabreux ;)



@+

Re: Modif champ texte par rapport à liste déroulante

Posté : 29 janv. 2014, 13:36
par synergie
Merci de vos réponses, j'ai réussi à faire cela.

Seulement, lors de la récupération de la variable dans une autre page, je faisais $_POST['txtDesc'] avant. Mais, vu que j'en ai 24, comment savoir quelle est la txtDesc envoyé ? Car, il va toutes les envoyer selon mon formulaire, non ?
<form method="post" action="confVlan.php" id="formUnVlan" onsubmit='return confirmFormUnVlan();'>
  <label for="lstInterface">Choix de l'interface : 
  <select name="nomInterface" id="nomInterface" size="1" onchange='return afficheDesc();'>  
    <?php 
    
    for($i=1;$i<=24;$i++)
    {
       echo "<option value=".$i.">interface fastEthernet 0/".$i;
       echo "</option>";
    }
    
    ?>
  </select>
  </label>
  <br />
  <br />
  <?php 
    for($i=1;$i<=24;$i++)
    {  ?>
  <div id='txtDesc<?php echo $i; ?>'>
  <label for='txtDesc<?php echo $i; ?>'>Description :
  <input type='text' name='txtDesc<?php echo $i; ?>' id='txtDesc<?php echo $i; ?>' value="<?php echo $_SESSION["description$i"]; ?>"> 
  </label>
  </div>
<?php } ?>
ce que je voudrais, c'est donc, récupérer uniquement $_POST['txtDesc10'], si c'est le champ 10 qui a été envoyé par exemple.

J'espère que vous m'aurez compris...

Re: Modif champ texte par rapport à liste déroulante

Posté : 29 janv. 2014, 14:43
par Spols
tu récupèrera le 10 par $_POST['nomInterface']
et donc $_POST['txtDesc'.$_POST['nomInterface']] te récupèrera la description voulue

Re: Modif champ texte par rapport à liste déroulante

Posté : 29 janv. 2014, 15:35
par synergie
Merci, c'est exactement ça !

Une petite dernière question :

Ce que je veux s'affiche correctement sur Firefox et Chrome mais dès que je passe sous IE -> Problème, le javascript ne s'éxécute pas.. Le javascript est pourtant bien activé...

Une explication ?


Déjà qu'IE n'est pas mon copain, là, je ne l'aime décidément plus....

De plus, il y a un certain laps de temps avant qu'il récupère les variables de sessions. Une faille IE ? :D

Re: Modif champ texte par rapport à liste déroulante

Posté : 30 janv. 2014, 16:35
par synergie
J'ai bien réussi à tout récupérer, cela marche nickel ! Merci encore.

Précision : hidden n'est pas pris en compte par IE. Il faut passer par visibility:hidden ou visible et display:none ou block ;)