Formulaire qui apparait ou disparait

apprentiDev Messages postés 171 Statut Membre -  
 apprentiDev -
Bonjour à toutes et à tous,

Je suis débutant en javascript, ( je n'y connait presque rien pour le moment) et je dois réaliser un formulaire qui se compose de deux parties. Une première partie qui s'affiche tout le temps, c'est le formulaire de base. Cependant si l'utilisateur le souhaite il doit pouvoir cliquer sur le lien "recherche avancé" et ce même lien dévoile la suite du formulaire ( sans changer de page, il faut obligatoirement rester sur la même page) , dans le même principe que sur google par exemple.

En regardant sur internet j'ai fini par trouver ce bout de code :

	<a href="#" onMouseOver="document.Img_1.src='image2.gif';" onMouseOut="document.Img_1.src='image1.gif';"> <img name="img_1" src="image1.gif"> </a>
		
	

var divFormulaire = document.getElementById("idDuDivFormulaire");
var divProfil = document.getElementById("idDuDivProfil");
 
boutonAfficheFormulaire .onclick = function { 
divFormulaire.style.visibility = 'visible';
divProfil style.visibility = 'hidden'; 
}
 
boutonAfficheProfil .onclick = function { 
divFormulaire.style.visibility = 'hidden';
divProfil style.visibility = 'visible'; 
}


Si j'ai bien compris ca permet de faire quelque chose de similaire à ce que je veux faire.

Cependant je début en javascript et je n'ai pas compris comment on fait pour activer différentes fonctions.

Que me manque-t-il pour que ce formulaire puisse être modulable comme je le souhaite?

Je vous met ce que j'ai fait( les deux partie du formulaire plus ce bout de code) :

/////////////////// formulaire de base///
echo '<form method="post" action="index.php?option=com_content&view=article&id=57&Itemid=103">';
//echo '<form method="post" action="resultat_images.php">';
	echo '<p>' ;
		echo '<br/>' ;			

		
		    Pays:

		<input type="text" name="pays" value=""  size="20" maxlenght="20" />
	
	
		<br /> 
	    <br />
	Lieu géographique:
		
		<input type="text" name="lieu_geo" value=""  size="20" maxlenght="20" />

	
		<br /> 
		<br /> 
		
		
	
		
		Longitude:
		
		<input type="text" name="longitude" value=""  size="20" maxlenght="20" />
		
		<select name="long_sens">
			
			<option value="N">Nord</option>
			<option value="S" selected="selected">Sud</option>
		     
		
		</select>
		
		<br /> 
	    <br />
		
			
		
			Latitude:
		
		<input type="text" name="latitude" value=""  size="20" maxlenght="20" />
		
		<select name="lati_sens">
			
			<option value="O">Ouest</option>
			<option value="E" selected="selected">Est</option>
		     
		
		</select>
		
		<br /> 
	    <br />
		
 
/////////////////////////////////Fin du formulaire de base /////////

//////////////////////// Le lien qui doit afficher la partie recherche avancé /

		<input type="submit" value="Recherche avance" />

/////////// début du bloc qui contient la deuxième partie du formulaire qui doit apparaitre ou disparaitre ///


	<form id="form2">
		<a href="rechercher_images.php">Recherche avancé</a>
		
		
		
		
		
	

var divFormulaire = document.getElementById("form2");

 
boutonAfficheFormulaire .onclick = function { 
divform2.style.visibility = 'visible';

}
 
boutonAfficheProfil .onclick = function { 
divform2.style.visibility = 'hidden';

}
		<br /> 
	    <br />
		
		
		Trace :
		
		<input type="text" name="Trace" value="" />
		
		<br /> 
	    <br />
		
		Rang:
		
		<input type="text" name="Rang" value="" />
		
		<br /> 
	    <br />
		
		Cannaux utilisés pour l\'image satelitaire :
		
		<input type="text" name="Canal" value="" />
		
		<br /> 
	    <br />
		
		Numéro de Campagne :
		
		<input type="text" name="Trace" value="" />
		
		<br /> 
	    <br />
		
		Nombre de photo par campagne :
		
		<input type="text" name="Trace" value="" />
			
			<br /> 
	    	<br />
	</form>		
		
<input type="submit" value="Valider" />

		
	</p>
	
</form>


Je vous remercie d'avance pour votre aide.

4 réponses

avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Un petit exemple que je viens de faire avec JQuery :
http://paste.pocoo.org/show/208871/
2
niconovice Messages postés 1037 Statut Membre 86
 
moi aussi j'ai un exemple !

http://nicoweb.dixkey.com/lol/

:p
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Mouais ... sauf que ce n'est pas vraiment ça qui est demandé par apprentiDev, et sans les erreurs HTML ça serait mieux :)
0
niconovice Messages postés 1037 Statut Membre 86
 
ici tu trouveras ta fonction

https://api.jquery.com/slideToggle/

3 ligne de codes :p
0
niconovice Messages postés 1037 Statut Membre 86
 
et comme tu es débutant voilà le lien qui va te sauver !

https://www.grafikart.fr/tutoriels/initiation-jquery-84

de rien et pense à mettre ton post comme resolu :D
0
apprentiDev Messages postés 171 Statut Membre 4
 
Merci pour le lien niconovice!

Par contre pourquoi quand on appuie sur masquer les informations complémentaires certains champs complémentaires ne disparaissent pas.
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Utilises "return false;" pour annuler le clic sur le lien.
boutonAfficheFormulaire .onclick = function() {
    // Le script
    return false;
}
1
apprentiDev Messages postés 171 Statut Membre 4
 
Je te remercie de ta réponse. Cependant je ne pense pas avoir compris du coup je vais te demander l'explication.

Pourquoi annuler le clic? Ce n'est pas en cliquant une deuxième fois que l'on déclenche le else?

Désolé de t'embête autant mais c'est pour bien comprendre sinon j'aurais la sensation d'avoir recopier bêtement ce que tu as dit sans cherche le pourquoi du comment.
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Je veux dire "annuler l'effet du clic sur le lien". Si tu ne l'annules pas, alors le lien aura son effet : la page indiquée dans la href sera chargée.
0
apprentiDev Messages postés 171 Statut Membre 4
 
Encore merci avion-f16 pour ta patience et tes explications.

J'ai essayer et je n'ai plus d'erreur. Cependant la deuxième partie du formulaire est déjà affiché malgré l'instruction divFormulaire.style.visibility = \'hidden\'; que j'ai mis au départ.

Est ce que je l'ai mal formulé ?
Je vais essayer de créer une autre fonction pour ce paramètre. Il faut peut être une fonction de départ qui dit de cacher le formulaire et la deuxième qui module ce formulaire.

Autres questions : Est ce que l'on peut placer l'appel de plusieurs fonctions dans le body grâce à onLoad? Si oui est ce que l'on sépare l'appel des fonctions avec le point virgule?

De façon plus général quels sont les méthodes à utiliser pour voir les erreurs d'une fonction en javascript même si ces erreurs ne s'affichent pas à l'écran?

J'ai testé en mettant des fonctions mais ca ne marche pas. De plus j'ai essayé d'appeler les fonctions dans la balise body avec onLaod ou à dans le body en utilisant le nom de la fonction suivie de (); mais je n'ai toujours rien.

Si quelqu'un à une idée qu'il n'hésite pas.
0
niconovice Messages postés 1037 Statut Membre 86
 
utilise Jquery il te suffira de trois ligne de code et hop nickel !
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
<script type="text/javascript">
window.onload = function() {
    var divFormulaire = document.getElementById("form2");
    var lien_avance= document.getElementById("lien");

    divFormulaire.style.visibility = "hidden";
    boutonAfficheFormulaire .onclick = function() {
        divFormulaire.style.visibility = (divFormulaire.style.visibility = "hidden") ? 'visible' : 'hidden';
    };
};
</script>
0
apprentiDev Messages postés 171 Statut Membre 4
 
Je te remercie de ton aide. Vraiment c'est gentil, merci.

Je teste le code demain et je te tiens au courant.

Merci à toi.
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
À la ligne
divFormulaire.style.visibility = (divFormulaire.style.visibility = "hidden") ? 'visible' : 'hidden';
Il manque un "=" avant "hidden".
J'espère ne pas avoir mis d'autres fautes.
0
apprentiDev
 
Je te remercie pour ton aide. C'est tout bon.

Merci avion-f16
0