Forum de discussion
Forum « Programmation Javascript » (archives)
Re: formulaire dynamique avec radio et checkbox
Envoyé: 9 septembre 2005, 9h52 par Oznog
Je ne vois pas le repport avec les "menus dynamiques" qui sont effectivement beaucoup plus complexe qu'un formulaire dynamique.
En fait les menus sont aussi plus simple mais il viennent avec tout un arsenal souvent inutile.
Il existe plusieurs façon de faire.
1. Les plus simple est d'avoir un calque par situation que tu affiche/cache selon l'état des boutons radio. Va lire sur le sujet "Modifier la visibilité des objets en DHTML" (http://www.trucsweb.com/DHTML/trucs.asp?no=279&type=2).
2. Tu peux peux garder un seul calque et modifier son contenu à l'aide de la propriété innerHTML. Voir : "Modifier le contenu et la position des objets en DHTML" (http://www.trucsweb.com/DHTML/trucs.asp?no=280&type=2). La plupart des scripts gratuits sont écrit avec cette méthode qui a un très gros défaut de façon professionnel. Si l'usager entre une valeur, qui change la forme du formulaire et puis revient à la première forme, les données seront perdu lors de l'opération. Ce qui n'est pas le cas avec la première technique.
3. Très avancé tu peux carrément te déplacer dans le document à partir du DOM et modifier ça structure, ajouter/modifier/détruire des éléments, de formulaire, des tableaux, leurs propriétés/valeurs etc. Il y a plusieurs exemple dans ce forum. Cette façon n'est pas très adapté à ce besoin particulier, toujours pour la même raison à savoir de ne pas perdre les données entre version de formulaire.
Voiçi un exemple simple.
<html><head>
<script type="text/javascript" language="javascript">
function twAfficheCache(nObjet,nEtat) {
document.getElementById(nObjet).style.visibility = (nEtat==0?'hidden':'visible');
}
</script>
</head>
<body>
<form>
<input type="radio" name="monChoix" id="monChoix" value="0" onclick="twAfficheCache('monForm-A',1);twAfficheCache('monForm-B',0);"> <input type="radio" name="monChoix" id="monChoix" value="1" onclick="twAfficheCache('monForm-A',0);twAfficheCache('monForm-B',1);"><br >
<div id="monForm-A" style="position:absolute;visibility:hidden;"><input type="text" name="monchamp1" size="75"></div>
<div id="monForm-B" style="position:absolute;visibility:hidden;"><input type="text" name="monchamp2" size="75"></div>
</form>
</body>
</html>
Ciao
Oznog
Réponses
|