afficher div quand coché mais caché quand décoché

petiteplume
Invité n'ayant pas de compte PHPfrance

02 nov. 2006, 12:18

Bonjour,

Voila, j'ai plusieurs div avec comme attribut hidden. Quand je clique sur la case a coché cela affiche bien la parti div(grace a une fonction) mais le probleme c'est que lorsque je reclique dessus je voudrai que cela se recache. Est-il possible de savoir si la case était deja cocher ? Faut-il utilisé autre chose que le onchange ? j'ai essayé onclick mais cela ne fonctionne pas.

J'espère que vous m'avez compris et que vous pourrez m'aidez.
merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 nov. 2006, 12:25

C'est du javascript, pas du php ça ;)

Le plus simple c'est dans ta fonction de tester l'état de ta case à cocher. quelque chose du genre :
if(document.monFormulaire.maCase.checked) // retourne vrai si la case est cochée
 // ... display = 'block'; ou visibility = "visible";
else
 // ... display = 'none';
L'action onClick sur tes cases à cocher doit normalement fonctionner.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

petiteplume
Invité n'ayant pas de compte PHPfrance

02 nov. 2006, 12:37

Donc suivant ton conseil j'ai :
function affichedate(){ 
if(document.enreg.dat.checked)
  document.getElementById("date").style.visibility='hidden'; 
else 
  document.getElementById("date").style.visibility='visible'; 
} 
<input name="dat" type="checkbox" id="dat" onClick="javacript:affichedate();">
  date 
  <div id="date" style="visibility:hidden">
  <p align="center">entre date  
    <input name="dat" type="text" id="dat" value"" size="8" readonly>
et <input name="dat" type="text" id="dat" value="" size="8" readonly> </p></div>
mais j'ai toujours le même souci, cela me l'affiche mais le cache pas. Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 nov. 2006, 12:47

C'est normal, c'est parce que tous tes champs s'appellent "dat" ;)
Change le nom et l'id de ta checkbox (pour rappel, les id doivent être unique sur une page, tu ne dois donc pas avoir deux champs avec le même id) et corrige le dans ta fonction également, tu devrais obtenir un meilleur résultat :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

petiteplume
Invité n'ayant pas de compte PHPfrance

02 nov. 2006, 12:55

je me suis trompé

la parti qui est caché ou afficher div est nommé date
ma case a coché est dat

je viens de faire ça :
function affichedate(){ 
if(document.enreg.dat.checked)
  document.getElementById("date").style.visibility='visible'; 
else 
  document.getElementById("date").style.visibility='hidden'; 
} 
et cela marche, c'est pas logique? si ?
en faite la fonction est executer une fois que c'est cocher ou decocher ? c'est ça ? en tout cas merci sa marche!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 nov. 2006, 02:26

C'est du javascript, pas du php ça ;)
Déménagement :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 nov. 2006, 11:57

en faite la fonction est executer une fois que c'est cocher ou decocher ? c'est ça ? en tout cas merci sa marche!
Tout à fait, l'état de la case change immédiatement lors du clic, et du coup le onClick prend en compte la case dans son nouvel état. Il suffit donc directement de regarder si la case a été (et donc est) cochée ou décochée (.checked) et d'agir en conséquence :)

Ps : Merci Truc :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...