Compter le nombre de radio button

misterdarth Messages postés 14 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 10 novembre 2004 - 7 oct. 2004 à 11:39
misterdarth Messages postés 14 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 10 novembre 2004 - 8 oct. 2004 à 00:06
Bonjour,
Lors de la saisie d'un formulaire, je cherche à tester certains champs afin de m'assurer que l'utilisateur n'a pas mis n'importe quoi.
Dans ce formulaires il y a, entre autre, des radio button.
Au niveau de mon bouton de validation, je fais appel à une fonction comme suit :

Le debut de la fonction est la suivante :

function Verif_Forms(MonForm)
{
var NbChecked;
var NbBox;
var NbRadio;

// Je recupere le nombre d'elements du formulaire
var NbElements = MonForm.elements.length

// Boucle tous les éléments du formulaire i
for (var l = 0; l < NbElements; l++)
{
Nom_Element = MonForm.elements[l].name;
Champ = MonForm.elements[l];
...

J'ai appliqué une politique de nom de champ de façon à savoir si celui-ci est obligatoire ou facultatif et de quel type il est. Dans le cas des radio buttons, voici l'instruction conditionnelle :
petite précision : dans mon formulaire j'ai 4 radio buttons qui s'appellent toutes Or_Radi
if ((Nom_Element.substring(0,1) "o" || Nom_Element.substring(0,1) "O") && (Nom_Element.substring(1,2) == "r" || Nom_Element.substring(1,2) == "R"))
{
NbChecked = 0;

var test = document.Fiche_acq.Or_radi.length;
alert(test);
// test me renvoie 4 ce qui est normal

var test2 = Nom_Element.length;
alert(test2);
// test2 me renvoie 7 ( soit la longueur du mot Or_radi)

var test3 = Champ.length;
alert(test3);
// test3 me renvoie Undefined

NbRadio = Nom_Element.length;
alert(NbRadio);
for (var k = 0; k < NbRadio; k++)
{
NbChecked = NbChecked +1;
if (document.Fiche_acq.Or_radi[k].checked == true)
{
break;
}
else if (NbChecked = NbRadio)
{
alert("Le champ suivant est obligatoire : " + Champ.id);
Champ.focus();
return false;
}
}
}
}

En fait, je n'arrive pas à compter le nombre de radio du meme nom avec mes variables. Et comme c'est une fonction que je souhaiterai utiliser pour tous mes formulaires, je ne peux pas laisser en dur " document.Fiche_acq.Or_radi.length".
Pourriez vous m'aider un peu ?
A voir également:

4 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 oct. 2004 à 12:37
bonjour,
je ne sais pas si j'ai tout compris mais
s'agit-il de compter le nombre de
boutons radios dans un formulaire ?
  for ( n=0;n<frm.elements.length;n++)
      { if (frm.elements[n].type=="radio")  ....

frm étant le nom du formulaire,
teste tous les champs et regarde si
"radio", quel que soit son nom.
il suffit donc de compter ?
Cordialement Bul. [
0
misterdarth Messages postés 14 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 10 novembre 2004
7 oct. 2004 à 13:07
Il s'agit effectivement de compter le nombre de radio dans un formulaire. Mais plus particulierement de vérifier si l'utilisateur a bien selectionne une des radio buttons d'un meme groupe.

Par exemple, vous avez le choix entre :
Lundi, Mardi, Mercredi
Ces trois radio buttons on le meme nom ( jour ) mais des valeurs differentes ( respectivement Lundi, Mardi, Mercredi )

Dans ma fonction, je veux pouvoir compter le nombre de radio buttons present sur le formulaire et ayant le meme nom.

Ce que je voudrais c'est comprendre pourquoi je n'arrive pas à compter le nombre de radio dans mon code.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 oct. 2004 à 14:25
exemple : le but du jeu :
contrôler si, dans une série de
<HEAD>
<TITLE></TITLE>
<script type="text.javascript">
function ctr()
{var rad="",ok;
for ( n=0;n<frm.elements.length;n++)
{if (frm.elements[n].type=="radio")
{if (rad!=frm.elements[n].name)
{rad=frm.elements[n].name;
ok=false;
for ( var i=0;i<document.getElementsByName(rad).length;i++)
{if (document.getElementsByName(rad)[i].checked)
{ok=true;
i=document.getElementsByName(rad).length; } }
if (!ok) alert(rad+" non coché"); } } } }
</script>
</HEAD>

<form name="frm">
r1-1
r1-2
r1-3

r2-1
r2-2
r2-3
r2-4
r2-5

</form>
</HTML>
</code>
il faut examiner les champs du formulaire,
si c'est un input radio, si c'est la 1ère fois
que l'on "rencontre" son nom, contrôler si
l'un ce ces input radio est coché.
à adapter donc aux besoins ....
Cordialement Bul. [
0
misterdarth Messages postés 14 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 10 novembre 2004
8 oct. 2004 à 00:06
Ok. Je ne connaissais pas le GetElementsByName
Plutot pratique ! :)
Merci pour ton aide bultez
Je t'invite à jetter un coup d'oeil ici :
http://www.javascriptfr.com/code.aspx?ID=26669
0
Rejoignez-nous