[résolu, merci][javascript] pb de lancement de formulaire

pb de lancement de formulaire [résolu, merci][javascript] - HTML/CSS - Programmation

Marsh Posté le 19-07-2004 à 18:26:07    

Bonjour,
 
Ca fait quelques jours que je galère sur un problème concernant les vérifications de formulaire. En plus, j'ai copié-collé ce qui était dans quelques tutos (en adaptant...). Bref, je ne voie pas mon (mes) erreur(s) :
 
Mon script (avant le <TITLE> ) :
<script language="JavaScript" type="text/javascript">
<!--
function verif_formulaire()
{
ok = 0;
 
if (document.f.nouvdest[12].checked == true) { ok = 1; }
if (document.f.nouvdest[14].checked == true) { ok = 1; }
if (document.f.nouvdest[15].checked == true) { ok = 1; }
if (document.f.nouvdest[13].checked == true) { ok = 1; }
 
if ((document.f.nouvprio[0].selected == true)+(document.f.nouvtitre.value == '')) { ok = 0; }
if (ok == 0)
{
alert('Erreur, remplissez tous les champs du nouveau message : titre, destinataire et niveau de priorité');
return false;
}
else
{
document.f.submit();
return true;
}
}
//-->
</script>
 
Puis avant le </FORM> :
<INPUT type="button" name="bouton" value="Valider" onClick="verif_formulaire();">
 
Ca me semble OK, mais pourtant ça ne marche pas.
IE me met un "objet attendu" tandis que le debugger JS de Firefox pointe la ligne if (document.f.nouvdest[12].checked == true) { ok = 1; } et marque "document.f.nouvdest" has no properties...
 
A signaler que si au lieu d'un bouton + test JS je mets un <INPUT type="submit">, ça marche (mais y'a pas de test). (Mais j'ai lu qu'il fallait faire un bouton qui lance un JS plutôt qu'un submit.)
 
Un grand merci d'avance pour l'aide,
papa6


Message édité par papa6 le 20-07-2004 à 16:15:38
Reply

Marsh Posté le 19-07-2004 à 18:26:07   

Reply

Marsh Posté le 20-07-2004 à 10:13:34    

t sur que c'est pas un prob de tes variables ?

Reply

Marsh Posté le 20-07-2004 à 10:17:59    

Citation :

(document.f.nouvdest[12].checked == true) { ok = 1; } et marque "document.f.nouvdest" has no properties


 
Si il te met qu'il n'y à pas de propriétés c'est qu'il n'y à pas de propriété !!!
 
---> regarde si tu appelle bien l'objet (document.f.nouvdest) et si tes noms de variable sont bien les mêmes (form name="f" ???)


Message édité par fxoxo le 20-07-2004 à 10:18:25

---------------
stpfilms.free.fr
Reply

Marsh Posté le 20-07-2004 à 11:26:38    

Oui, ça doit être un problème de variables.
 
Pour le nom du form, c'est bien "f".
J'ai essayé document.f.nouvdest[12].checked et ocument.f.nouvdest.[12].checked, mais cette dernière possibilité ne marche pas. J'ai aussi essayé ['12'] sans succès...
J'ai aussi viré le "== true", pas de changement :-(
 
Je crois que l'erreur se situe au niveau du nom de la checkbox, mais je ne peux pas tester toutes les checkboxes de ma page, celle qui m'intéresse est "nouvdest[n°]

Reply

Marsh Posté le 20-07-2004 à 11:42:27    

Un truc comme ca devrais marcher
 
 
//nombre de checkbox (si variable)
var longueur= document.f.nom_checkbox.length;
 
for (i=0; i < longueur; i++)
  {
   if(document.getElementsByName("nom_checkbox" )[i].checked == true)
   ok=1;
  }


---------------
stpfilms.free.fr
Reply

Marsh Posté le 20-07-2004 à 12:01:43    

merci mais c'est pas ça...  :-(
il me met :
Erreur : document.f.nouvdest has no properties
 
Est-ce que ce n'est pas parce que le nom de la checkbox est "nouvdest[12]" et non pas "nouvdest" avec [12] coché ?
Alors j'ai aussi essayé if(document.getElementsByName("nouvdest[i]" ).checked
mais là non plus... pourtant, la différence avec précemment, c'est que je n'obtiens plus d'erreur du déboggueur. Quand je clique sur le bouton, il semble effectuer sa fonction en douce, mais ni n'affiche l'alert, ni lance le submit...

Reply

Marsh Posté le 20-07-2004 à 13:08:46    

papa6 a écrit :

merci mais c'est pas ça...  
Est-ce que ce n'est pas parce que le nom de la checkbox est "nouvdest[12]" et non pas "nouvdest" avec [12] coché ?


 
Oui: tout tes checkbox doivent avoir le même nom
ex: http://fr.selfhtml.org/html/formul [...] rification
 
 
Pizza <input type="checkbox" name="checkbox_produit" value="pizza" style="border-width:0px;"> //checkbox_produit[1]
Fromage <input type="checkbox" name="checkbox_produit" value="fromage" style="border-width:0px;">//checkbox_produit[2]
Thon <input type="checkbox" name="checkbox_produit" value="Thon" style="border-width:0px;">//checkbox_produit[31]
 
 
 


---------------
stpfilms.free.fr
Reply

Marsh Posté le 20-07-2004 à 14:48:27    

je viens d'essayer avec la variable "nouvdest[]" qui prend value=12 (par exemple)
 
je devrais alors avoir nouvdest[0] = 12, nouvdest[1] = 14, nouvdest[2] = 18 si j'ai coché les cases 12, 14 et 18.
 
et de cette façon, j'obtiens encore un Erreur : document.f.nouvdest has no properties
 
 
Voici un extrait plus complet de mon code, le cas où...
 
<script language="JavaScript" type="text/javascript">
<!--
function verif_formulaire()
{
 ok = 0;
 
 
var longueur= document.f.nouvdest.length;
 
for (i=0; i < longueur; i++)
  {
   if(document.getElementsByName("nouvdest" )[i].checked == true)
   ok=1;
  }
 if ((document.f.nouvprio[0].selected == true) || (document.f.nouvtitre.value == '')) { ok = 0; }
 if (ok == 0)
 {
  alert('Erreur, remplissez tous les champs du nouveau message : titre, destinataire et niveau de priorité');
 }
 else
 {
  document.f.submit();
 }
}
//-->
</script>
 
[...]
<FORM method="POST" name="f" action="#" ENCTYPE="multipart/form-data">
 
[...]
A l'attention de :<BR>
<INPUT type="checkbox" name="nouvdest[]" value="14">Lyly &nbsp;&nbsp;&nbsp;&nbsp;<INPUT type="checkbox" name="nouvdest[]" value="15">Luc &nbsp;&nbsp;&nbsp;&nbsp;<INPUT type="checkbox" name="nouvdest[]" value="13">Neo &nbsp;&nbsp;&nbsp;&nbsp;<INPUT type="checkbox" name="nouvdest[]" value="12">Mémo personnel
 
[...]
<INPUT type="button" name="bouton" value="Valider" onClick="verif_formulaire();return true;">

Reply

Marsh Posté le 20-07-2004 à 15:09:22    

<INPUT type="checkbox" name="nouvdest[]" value="14">Lyly &nbsp;&nbsp;&nbsp;&nbsp;<INPUT type="checkbox" name="nouvdest[]" value="15">Luc &nbsp;&nbsp;&nbsp;&nbsp;<INPUT type="checkbox" name="nouvdest[]" value="13">Neo &nbsp;&nbsp;&nbsp;&nbsp;<INPUT type="checkbox" name="nouvdest[]" value="12">
 
 
name="nouvdest[]" c'est pas bon, tu doit avoir name="nouvdest" pour tous tes checkbox nouvdest (c'est avec le javascript que tu utilise un tableau pour accéder à un des checbox par ex checkbox[0] et le premier input de nom checkbox de ta page , checkbox[1] le 2emme etc ...)
 
ainsi si tu met ca :
 
<script language="JavaScript" type="text/javascript">
<!--
function verif_formulaire()
{
ok = 0;
 
 
var longueur= document.f.nouvdest.length;
 
for (i=0; i < longueur; i++)
 {
  if(document.getElementsByName("nouvdest" )[i].checked == true)
  ok=1;
 }
//if ((document.f.nouvprio[0].selected == true) || (document.f.nouvtitre.value == '')) { ok = 0; }
if (ok == 0)
{
 alert('Erreur, remplissez tous les champs du nouveau message : titre, destinataire et niveau de priorité');
}
else
{
 document.f.submit();
}
}
//-->
</script>
 
[...]
<FORM method="POST" name="f" action="#" ENCTYPE="multipart/form-data">
 
[...]
A l'attention de :<BR>
<INPUT type="checkbox" name="nouvdest" value="14">Lyly &nbsp;&nbsp;&nbsp;&nbsp;<INPUT type="checkbox" name="nouvdest" value="15">Luc &nbsp;&nbsp;&nbsp;&nbsp;<INPUT type="checkbox" name="nouvdest" value="13">Neo &nbsp;&nbsp;&nbsp;&nbsp;<INPUT type="checkbox" name="nouvdest" value="12">Mémo personnel
 
[...]
<INPUT type="button" name="bouton" value="Valider" onClick="verif_formulaire();return true;">  
 
(j'ai mis en commentaire le script sur nouvprio et nouvtitre non présent dans le code)  
Ca marche: si tu ne coche aucune case, tu à le message d'alert, sinon c'est ok ...


Message édité par fxoxo le 20-07-2004 à 15:10:22

---------------
stpfilms.free.fr
Reply

Marsh Posté le 20-07-2004 à 15:52:12    

c'est vrai que le message d'erreur s'affiche si on ne sélectionne personne, mais si je sélectionne 2 personnes, seule une est sélectionnée, puisque maintenant ce n'est plus un tableau.
Pourtant je sais que la forme <INPUT type="checkbox" name="nouvdest[]" value="14"> marche en JS
 
Avec cette forme en tableau, qui autorise la saisie de plusieurs checkbox, je ne sais pas...

Reply

Marsh Posté le 20-07-2004 à 15:52:12   

Reply

Marsh Posté le 20-07-2004 à 16:10:13    

c'est bon, voici la réponse :
 
il fallait utiliser getElementsByName("nouvdest[]" )[i]
 
Extraits :
<script language="JavaScript" type="text/javascript">  
<!--  
function verif_formulaire()  
{  
ok = 0;  
var longueur= document.getElementsByName("nouvdest[]" ).length;  
 
for (i=0; i < longueur; i++)  
{  
if(document.getElementsByName("nouvdest[]" )[i].checked == true) ok=1;  
}  
 
if (ok == 0)  
{
alert('Erreur, remplissez tous les champs du nouveau message : titre, destinataire et niveau de priorité');
}  
else
{
document.f.submit();
}  
 
}  
 
//-->  
</script>  
 
Puis :
<INPUT type="checkbox" name="nouvdest[]" value="12">Machin &nbsp;&nbsp;&nbsp;&nbsp;
<INPUT type="checkbox" name="nouvdest[]" value="15">Tartenpion &nbsp;&nbsp;&nbsp;&nbsp;
etc...
 
 
SUJET CLOS , merci pour votre aide ! :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed