Comment faire apparaître une partie d'un formulaire... [Javascript] - Programmation
Marsh Posté le 22-12-2001 à 17:45:20
personne n'a déjà fait ça??
avec les attributs visibility...?
[edtdd]--Message édité par haazheel--[/edtdd]
Marsh Posté le 23-12-2001 à 15:13:16
Comme je connais pas le javascript, j'ai commencé par tout simple:
onClick="this.form.textfield.focus()"
met le curseur dans le champ textfield quand je clique sur une case à cocher.
J'ai vu un terme javascript nommé visibility qui permet de cacher ou de faire apparaître tout ce qui se trouve entre deux <div> par exemple. Mais j'ai tenté ça:
onClick="document.all.test.style.visibility:hidden"
onClick="javascript: document.all.test.style.visibility:hidden"
onClick="document.all.test.style.visibility:hidde
n;"
onClick="javascript: document.all.test.style.visibility:hidden;"
Mais rien à faire ça marche pas. J'ai même un message d'erreur me disant ";" attendu.
HELP!!!
[edtdd]--Message édité par haazheel--[/edtdd]
Marsh Posté le 23-12-2001 à 15:22:56
une petite recherche sur "visibility te donnera des merveilles
Marsh Posté le 23-12-2001 à 15:22:58
une petite recherche sur "visibility te donnera des merveilles
Marsh Posté le 23-12-2001 à 15:25:43
C'est bon, j'ai trouvé avant.
La syntaxe correcte est:
onSelect="javascript: document.all.test.style.v
isibility='hidden';"
Tiens, au fait, c'est quoi le contraire de onSelect en javascript?
[edtdd]--Message édité par haazheel--[/edtdd]
Marsh Posté le 23-12-2001 à 15:41:38
onblur != onfocus
onselect : onchange
[edtdd]--Message édité par k666--[/edtdd]
Marsh Posté le 23-12-2001 à 16:38:13
Bon, ok ça marche, mais:
quand le visiteur clique sur le radio 'non', tout ce qui se trouve dans la balise <div...> disparaît. Cette balise contient un tableau. Et cette balise est dans une cellule de tableau.
Mais quand la balise "se cache", la ligne du tableau dans laquelle se trouve la balise garde la même taille, occasionnant un gros trou dans le formulaire.
Comment, quand le div disparaît, rétrécir la ligne du tableau?
PS: J'ai essayé de faire ça, mais ça marche pas:
<table>
<tr><td></td></tr>
<div class="cacher"><tr><td></td></tr></div>
<tr><td></td></tr>
</table>
Mais ça marche pas...
Des idées?
Marsh Posté le 23-12-2001 à 23:08:36
"display : none " au lieu de hidden. block pour faire réapparaître.
Marsh Posté le 24-12-2001 à 00:10:46
Super, c'est exactement ça...
Allez, une dernière question pour la route: j'ai fait deux scripts, un pour l'affichage, l'autre pour l'effacement, de cette balise <div>, que voici:
<script language="JavaScript">
function hidden()
{
ns4 = (document.layers)? true:false; //si le navigateur est Netscape Navigator 4
ie4 = (document.all)? true:false; // si le navigateur est Internet Explorer 4
dom = (document.getElementById)? true:false; //si le navigateur est Navigator 6 ou Explorer 5
if (dom) {
document.getElementById('cacher'.style.display = "none";
}
else if (ie4){
document.all('cacher'.style.display = "none"; }
else if (ns4){
document.cacher.display = "none";
}
}
</script>
<script language="JavaScript">
function visible()
{
ns4 = (document.layers)? true:false; //si le navigateur est Netscape Navigator 4
ie4 = (document.all)? true:false; // si le navigateur est Internet Explorer 4
dom = (document.getElementById)? true:false; //si le navigateur est Navigator 6 ou Explorer 5
if (dom) {
document.getElementById('cacher'.style.display = "block"; }
else if (ie4){
document.all('cacher'.style.display = "block"; }
else if (ns4){
document.cacher.display = "block";
}
}
Je les appelle par:
<input type="radio" name="pratique" value="oui" onFocus="javascript:visible();" checked>
<b>Oui</b><br>
<input type="radio" name="pratique" value="non" onFocus="javascript:hidden();">
<b>Non </b>
Comment les combiner pour ne faire qu'une seule fonction, et les appeller par:
onFocus="javascript:cacher(oui);" pour cacher
ou
onFocus="javascript:cacher(non);" pour faire apparaître
??
Merci
Marsh Posté le 24-12-2001 à 00:44:31
function myVisibility(str)
{
ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;
dom = (document.getElementById) ? true:false;
if (dom) document.getElementById('cacher'.style.display = str;
else if (ie4)
document.all('cacher'.style.display = str;
else if (ns4)
document.cacher.display = str;
}
que tu appelles par myVisibility('none' ou myVisibility('block'; ...
si tu tiens absolument à faire 'oui'/'non' tu remplaces par :
function myVisibility(str)
{
str = (str == 'oui' ? 'block' : 'none';
// et le reste de la fonction pareil ...
// ...
Marsh Posté le 22-12-2001 à 15:36:51
Salut,
comment je peux choisir de faire apparaître une partie d'un formulaire si le visiteur choisit oui, et inversement de le faire disparaître si il clique sur non?
Merci