Cacher un formulaire

Eléphant du PHP | 119 Messages

31 mai 2006, 10:05

Bonjour,
voici mon cas.

j'ai une case a cocher et un input de type file.

je souhaiterai savoir si il est possible de cacher le champ input de type file tant que la case n'a pas été cochée.

Merci

Bonne journée

Mammouth du PHP | 1353 Messages

31 mai 2006, 10:10

Il y a comme moyen de jouer sur l'attribut readonly de ton file, que tu peux mettre à "true" tant que la case n'est pas cochée ce qui empechera l'utilisateur de selectionner un fichier, puis à false lorsque la case est cochée.

Néanmoins pour faire cela dynamiquement il faut utiliser le Javascript, car en php cela nécessiterai un rechargement (refresh) de la page provoqué par l'utilisateur (en php) ou dynamiquement lorsque le statut de la case a cocher change (en javascript).

De la même manière au lieu de jouer sur l'attribut readonly tu peux mettre ton input dans une <div> cachée (visible:none) tant que la case n'est pas cochée et qui apparait lorsqu elle est cochée, mais encore une fois c'est du javascript.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

31 mai 2006, 10:15

Exemple d'activation ou de masquage à partir d'un bouton radio (javascript), vu sur éditeurjavascript.

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Désactivation / Masquage</title> <script language="Javascript"> // ================== // Activations - Désactivations // ================== function GereControle(Controleur, Controle, Masquer) { var objControleur = document.getElementById(Controleur); var objControle = document.getElementById(Controle); if (Masquer=='1') objControle.style.visibility=(objControleur.checked==true)?'visible':'hidden'; else objControle.disabled=(objControleur.checked==true)?false:true; return true; } </script> </head> <body> Exemples de désactivations :<br /><br /> <form> <input type="checkbox" id="chkb_1" onClick="GereControle('chkb_1', 'texte_1', '0');" CHECKED>&nbsp;<label for="chkb_1">Contrôle de "texte_1"</label>&nbsp;<input type="text" id="texte_1" value="Contenu de texte_1"> <br /><br /> <input type="radio" id="radio_1" name="radios" onClick="GereControle('radio_1', 'liste_1', '0');" CHECKED>&nbsp;<label for="radio_1">Active de "liste_1"</label> <br /> <input type="radio" id="radio_2" name="radios" onClick="GereControle('radio_1', 'liste_1', '0');">&nbsp;<label for="radio_2">Désactive de "liste_1"</label> <select id="liste_1"> <option value="1">Ligne 1</option> <option value="2">Ligne 2</option> <option value="3">Ligne 3</option> </select> <p>&nbsp;</p> Exemples de masquage :<br /><br /> <input type="checkbox" id="chkb_10" onClick="GereControle('chkb_10', 'texte_10', '1');" CHECKED>&nbsp;<label for="chkb_10">Contrôle de "texte_10"</label><input type="text" id="texte_10" value="Contenu de texte_10"> <br /><br /> <input type="radio" id="radio_10" name="radios_0" onClick="GereControle('radio_10', 'liste_10', '1');" CHECKED>&nbsp;<label for="radio_10">Active de "liste_10"</label> <br /> <input type="radio" id="radio_20" name="radios_0" onClick="GereControle('radio_10', 'liste_10', '1');">&nbsp;<label for="radio_20">Désactive de "liste_10"</label> <select id="liste_10"> <option value="1">Ligne 1</option> <option value="2">Ligne 2</option> <option value="3">Ligne 3</option> </select> </form> </body> </html>

Eléphant du PHP | 119 Messages

31 mai 2006, 10:17

d'accord merci,

c'est bien ce qui me semblait

bonne journée^^

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

31 mai 2006, 10:38

Tu peux aussi jouer sur le style "display" (none/bloc/inline) au lieu de "visibility" (hidden/visible).

La différence étant que visibility masque simplement l'objet mais conserve l'espace qu'il occupe dans la page html, tandis que display le supprime de l'affichage (donc pas de trou :))

Sinon juste un truc que je trouve original dans le code trouvé par Charabia :

Code : Tout sélectionner

objControle.disabled=(objControleur.checked==true)?false:true;
Soit : Si "vrai" est "vrai" alors "faux" sinon "vrai" :)

Code : Tout sélectionner

objControle.disabled=!objControleur.checked;
C'est quand même plus simple comme ça ;)

Avatar du membre
ViPHP
ViPHP | 3008 Messages

31 mai 2006, 10:42

Sinon juste un truc que je trouve original dans le code trouvé par Charabia :

Code : Tout sélectionner

objControle.disabled=(objControleur.checked==true)?false:true;
Soit : Si "vrai" est "vrai" alors "faux" sinon "vrai" :)

Code : Tout sélectionner

objControle.disabled=!objControleur.checked;
C'est quand même plus simple comme ça ;)
Je suis innocent m'sieur ! :langue: