Compter le nombre de radio button

Signaler
Messages postés
14
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
10 novembre 2004
-
Messages postés
14
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
10 novembre 2004
-
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

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
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. [
Messages postés
14
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
10 novembre 2004

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.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
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. [
Messages postés
14
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
10 novembre 2004

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