Formulaire afficher ou cacher une zone de texte

Résolu
cs_frlobe Messages postés 7 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 15 août 2010 - 29 mai 2010 à 14:04
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 1 juin 2010 à 22:33
Bonjour
Tout d'abord, je précide qu'autant je connais HTML et PHP, autant je découvre le JS ...
Bon voici mon problème: j'ai un formulaire en HTML avec une liste déroulante contenant plusieurs choix dont "Autre". Si l'utilisateur sélectionne ce choix "Autre", je souhaite qu'une zone de texte s'affiche pour que l'utilisateur puisse entrer son texte personnalisé.
Après plusieurs recherches, j'arrive à ce code qui ne marche pas ... Et je n'arive pas à trouver mon erreur ...

Voici mon code:
1- les balises <head>:
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<title>test</title>
<script type="text/javascript">
function afficherAutre()
{
var m = document.getElementById("type_offre");
  
if (document.form1.liste.value == "type_offre")
{
if (m.style.display == "none")
m.style.display = "block";
}
else
{
m.style.display = "none";	
}
}
</script>
</head>

2- mon formulaire HTML:
<form name="form1" action="" method="post">
<tr>
<td class="ligne_claire">

<select name="type_offre" onchange="afficherAutre()">
<option value="">-</option>;
<option name="cdi">C.D.I.</option>
<option name="cdd">C.D.D.</option>
<option name="cdi">Interim</option>
<option name="stage">Stage</option>
<option name="cdi">Apprentissage/Alternance</option>
<option name="autre">Autre</option>
</select>
 Autre :

 

</td>
</tr>
<tr>
<td class="ligne_claire" colspan="2" align="right">
 

</td>
</tr>
</form>

Merci de votre aide.

4 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
29 mai 2010 à 16:18
Bonjour,
beaucoup d'erreur dans ce que je lis
- un name doit être unique dans une FORM à l'exception des INPUTs type RADIO
- les OPTIONs n'ont pas de name mais une value
voila au minimum pour la partie concernant le SELECT, cela devrait donner un truc dans ce style...
  <select name="nom_select" onchange="afficherAutre()">
    <option value="">-</option>;
    <option value="cdi">C.D.I.</option>
    <option value="cdd">C.D.D.</option>
    <option value="cdi">Interim</option>
    <option value="stage">Stage</option>
    <option value="cdi">Apprentissage/Alternance</option>
    <option value="autre">Autre</option>
  </select>
   Autre :
    
  
au passage j'ai rajouté des "" sur l'ID du SPAN

maintenant passons à la fonction
une écriture pourrait être celle ci
function afficherAutre(){
  //-- Recup reference au SPAN
  var O_Span = document.getElementById("autre");
  //-- Recup reference au SELECT
  var O_Select = document.form1["nom_select"];
  //-- Test sur valeur de la selection
  if( O_Select.value == "autre"){
    //-- supprime le display, le mettre a block ne correspond
    // pas au display par defaut d'un SPAN qui est nativement inline
    O_Span.style.display = "";
  }
  else{
    O_Span.style.display = "none";
  }
}

Voilou en gros...
;O)
3
cs_frlobe Messages postés 7 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 15 août 2010
30 mai 2010 à 02:26
Ca fonctionne: je te remercie beaucoup pour ta correction. Avec tes commentaires, ça me permet de comprendre en plus mes erreurs.
0
cs_frlobe Messages postés 7 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 15 août 2010
1 juin 2010 à 11:17
Finalement, mon code ne fonctionne pas à 100%. Pour une raison que je n'arrive pas à déterminer, ma variable est vide et rien n'est inséré dans ma table SQL.
Une idée? Merci d'avance
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
1 juin 2010 à 22:33
Bonjour,
il n'y a aucune raison si les champs devant être transmis possèdent un NAME.
Il te faut afficher coté PHP l'ensemble de la transmission pour vérifier si la variable à bien été transmise, si elle est vide ...etc...
;O)
0
Rejoignez-nous