Div caché lié à une liste déroulante

JBennn Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite afficher une div lorsque un choix dans ma liste deroulante est en "selected" mais je ne vois pas comment faire :S

auriez-vous une idée ? svp la Div s'affiche déjà lorsque je selectionne le choix 0 dans la liste.

Voici mon code :

<select onchange="etape();" name="changeStep" id="changeStep">
					<?php 
					$listeSteps = mysql_query("SELECT * FROM pass_listeEtape 
											WHERE numEtape NOT IN(
												SELECT numEtape FROM pass_etape WHERE numPass = '{$thePass['idPass']}'
											)
												ORDER BY idListeEtape");
					
					while($step = mysql_fetch_array($listeSteps)){
					print_r($step);
						?>
						<option name="choix" value="<?php echo $step['numEtape'];?>">Étape <?php echo $step['numEtape'];?> - <?php echo $step['libelle'];?></option>
						<?php
					}
					?>
				</select>
				<div id="hidden">
					<label>Date de retour du BDL <input type="date" name="dateRetourBl" value="<?php echo $step['numEtape'];?>" /></label>
				</div>
				<input type="submit" value="Ajouter"/>
			</form>
			
			<script type="text/javascript">
				document.getElementById('hidden').style.visibility = "hidden";
				
				function etape() {
					if(document.formEtape.changeStep.value == 0){
				
						document.getElementById("hidden").style.visibility = "visible"
					}
					else
					{
						document.getElementById("hidden").style.visibility = "hidden"
					}
				};
			</script>




A voir également:

1 réponse

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
avec none et bloc la place du div n'est pas "gardée"
avec hidden et visible la place est "gardée"

<head>
<script type="text/javascript">
	function etape() {
		var selection_liste = document.getElementById('changeStep')
		if(selection_liste.value != -1){				
			document.getElementById('div_hidden').style.display = 'block';
			//on affiche le numéro d'étape dans l'input
			document.getElementById('dateRetourBl').value = selection_liste.value;
		}else{
			document.getElementById('div_hidden').style..display = 'none';
		}
	};
</script>

</head>
<body>
<form name="form1" method="post" action="...." >
	<select  name="changeStep" id="changeStep" onchange="etape();">
		<option value="-1"> -- choisissez une étape --</option> <!-- cette ligne obligatoire si tu veux un changement à chaque fois -->
	<?php 
		$listeSteps = mysql_query("SELECT * FROM pass_listeEtape 
								WHERE numEtape NOT IN(
								SELECT numEtape FROM pass_etape WHERE numPass = '{$thePass['idPass']}')
								ORDER BY idListeEtape");
						
		while($step = mysql_fetch_array($listeSteps)){
			//print_r($step); 
			/*
			pour avoir un affichage plus lisible de l'array:
			echo '<pre>';
			print_r($step);
			echo '</pre>';
						
			*/
			//pas de name dans <option
	?>
			<option value="<?php echo $step['numEtape'];?>">Étape <?php echo $step['numEtape'];?> - <?php echo $step['libelle'];?></option>
	<?php
		}
	?>
	</select>

	<div id="div_hidden" style="display:none;">
		<!-- on cache d'office le div -->
		<label>Date de retour du BDL <input type="date" name="dateRetourBl" id="dateRetourBl" value="" /></label>
		<!-- 
		tel que tu avait mis value= c'était la dernière de la liste des étapes, il faut charger cette valeur par JS par la fct etape() 
		d'ailleurs je ne comprend pas pourquoi tu mets ici le numéro d'étape alors que tu attend une date ??
		et attention type="date" c'est du html5 ne fonctionne pas avec tous les navigateurs, mets plutot text et controle ensuite
		-->
	</div>
	<input type="submit" name="ajouter" value="Ajouter"/>
</form>
			
			
0