Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
660 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] Question basique de fonctions...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JS] Question basique de fonctions...

n°1840657
bastien710​00
Posté le 20-01-2009 à 18:17:37  profilanswer
 

Bonjour,
 
Je cherche à ce que tous les champs d'un formulaire soient grisées, mais que, en cas de clic dans la checkbox associée, le champ en question soit accessible. J'ai trouvé un truc qui fonctionne bien, que voici :
 
<script language="javascript">
function activer()
{
    if (window.document.etape3.presence_acteurs.checked==true)  {
      window.document.etape3.nombre_acteurs.disabled=false;
   }else{
      window.document.etape3.nombre_acteurs.disabled=true;
   }
}
</script>
 
et, le formulaire correspondant :
 
<form action="" method"post" name="etape3">
 
<input type="checkbox" value="acteurs_presents" name="presence_acteurs" onClick="activer()" />Test
<input type="text" name="nombre_acteurs" disabled/>
</form>
 
Alors, ça, ça marche bien, mais voilà, je voudrais passer en paramètre à la fonction activer, le nom du champ et de la checkbox auquels elle s'applique, pour pouvoir l'utiliser sur plusieurs lignes de formulaire différentes...
J'ai essayé de bidouiller deux trois trucs, mais sans succès. Ca n'a pas l'air compliqué, mais... j'arrive pô :(
 
donc je fais appel à votre aide ;)

mood
Publicité
Posté le 20-01-2009 à 18:17:37  profilanswer
 

n°1840673
masklinn
í dag viðrar vel til loftárása
Posté le 20-01-2009 à 18:58:37  profilanswer
 

activer(this);
 
Accessoirement, je suggérerais fortement:

  • De ne pas passer par window.document.etape3.presence_acteurs, c'est pas très propre, préférer passer par getElementsById et autres vrais sélecteurs DOM
  • De passer par de vrais handlers d'évènements (générés sur onload/ondomready) plutôt que de coller le JS inline dans tes balises HTML
  • c'est script type="text/javascript", pas script language="javascript"
  • Dans une condition, pas besoin de ==true, c'est redondant
  • Se renseigner sur le concept de progressive enhancements: avec ton truc, si une personne arrive avec le JS désactivé (navigateur ne supportant pas, configuré pour ne pas exécuter le JS, ou extension NoScript sur Firefox) elle ne peut pas utiliser l'input... [:petrus75]
  • Enfin choisir entre HTML et XHTML, parce que disabled sans valeur derrière c'est du HTML, ferme un tag avec /> c'en est pas.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1840686
bastien710​00
Posté le 20-01-2009 à 19:25:38  profilanswer
 

Houlala... je vais essayer de traduire ce que tu me dis, pis je vais tester. Donc je fais :
 
<script type="text/javascript">
function activer(case_coche,champ_input)
{
    if ( document.getElementById("case_coche" ).checked)  {
       document.getElementById("champ_input" ).disabled=false;
   }else{
       document.getElementById("champ_input" ).disabled=true;
   }
}
</script>  
 
<form action="" method"post" name="etape3">
 
<input type="checkbox" value="acteurs_presents" name="presence_acteurs" onClick="activer(this,nombre_acteurs)" />Test
<input type="text" name="nombre_acteurs" disabled="disabled"/>
</form>  
 
 
mais ça marche po, mon champ reste grisé...
(j'ai tenté d'appliquer les points 1,3,4,6. pour le 2, pas compris et le 5, le problème ne se pose pas dans mon cas)
 
 
EDIT :
 
ça, ça marche :

<script type="text/javascript">
function activer()
{
    if (window.document.getElementById("presence_acteurs" ).checked)  {
      window.document.getElementById("nombre_acteurs" ).disabled=false;
   }else{
      window.document.getElementById("nombre_acteurs" ).disabled=true;
   }
}
</script>  
</head>
<body>
 
<form action="" method"post" name="etape3">
 
<input type="checkbox" value="acteurs_presents" name="presence_acteurs" onClick="activer()" id="presence_acteurs"/>Test
<input type="text" name="nombre_acteurs" disabled="disabled" id="nombre_acteurs"/>
</form>  


 
mais toujours impossible de passer mes deux id en variable...
 
 
EDIT : bon, finalement j'ai réussi à faire qqch qui fonctionne :

<script type="text/javascript">
function activer(ca,ch)
{
    if (window.document.getElementById(ca ).checked)  {
      window.document.getElementById(ch ).disabled=false;
   }else{
      window.document.getElementById(ch ).disabled=true;
   }
}
</script>  
</head>
<body>
 
<form action="" method"post" name="etape3">
 
<input type="checkbox" value="pr" name="pr" onClick="activer('pr','se')" id="pr"/>Test
<input type="text" name="se" disabled="disabled" id="se"/><br/><br/>
 
<input type="checkbox" value="dawa" name="dawa" onClick="activer('dawa','yoplait')" id="dawa"/>Test
<input type="text" name="yoplait" disabled="disabled" id="yoplait"/>
</form>


 
merci bien à toi :)


Message édité par bastien71000 le 20-01-2009 à 19:41:32
n°1840793
masklinn
í dag viðrar vel til loftárása
Posté le 20-01-2009 à 22:09:25  profilanswer
 

[:prozac]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1841269
bastien710​00
Posté le 21-01-2009 à 18:45:31  profilanswer
 

?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] Question basique de fonctions...

 

Sujets relatifs
Question débutant sur errorlevelPetite question à propos de Flash
[JS]Variable d' une page à un autrePetite question sur un on release
Question de baseliaison dans un forumulaire (JS)
Question sur les variablescontrôle de saisie JS
Declaration de fonctions statiques, warning multiplesquestion reseau
Plus de sujets relatifs à : [JS] Question basique de fonctions...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR