Formulaire afficher ou cacher une zone de texte [Résolu]

Messages postés
7
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
15 août 2010
- - Dernière réponse : 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.
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PetoleTeam
Messages postés
7
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
15 août 2010
0
Merci
Ca fonctionne: je te remercie beaucoup pour ta correction. Avec tes commentaires, ça me permet de comprendre en plus mes erreurs.
Commenter la réponse de cs_frlobe
Messages postés
7
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
15 août 2010
0
Merci
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
Commenter la réponse de cs_frlobe
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
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)
Commenter la réponse de PetoleTeam