Problème de script

Signaler
Messages postés
6
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
5 juin 2009
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
Bonjour, je rencontre un problème au niveau du fonctionnement de mon script.
Au début il fonctionnait lorsque l'attribut "name" était tout simplement "region" et sans attribut "value"
Le problème, c'est que je dois récupérer les cases checkées dans une page php. Je suis donc obligé de spécifier un nom de tableau en tant qu'attribut "name" de la balise et une value associée que je peux ainsi récupérer dans ma page php.

Dans la partie qui suis les 2 premières lignes commentées "ICI" sont celles que j'ai changé dans ma page html qui ne fonctionnent plus et les lignes suivantes celles qui fonctionnaient lorsque l'attribut "name" était tout simplement "region" .

Code html:

<!--ICI-->    <li class='liregion'>
 <!--ICI-->    Alsace</li>
                       
                        <li class='liregion'>Aquitaine</li>
                        <li class='liregion'>Auvergne</li>
                       

Le code Javascript:
function RegionSelectionnee(nbre)
{
if(document.formRegions.region[nbre].checked)
{
document.formRegions.region[nbre].checked = false;
}
else
{
document.formRegions.region[nbre].checked = true;
}

verifCases();
}

Merci d'avance pour vos solutions

6 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
Bonjour,
les crochets !
donc utilisation = document.formRegions["region[]"][nbre]
et test inutile ?
function RegionSelectionnee(nbre)
{    document.formRegions.["region[]"][nbre].checked = !document.formRegions.["region[]"][nbre].checked;
     verifCases();
}
Cordialement [mon Site] [M'écrire] Bul
Messages postés
6
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
5 juin 2009

Bonjour Bul3 et merci pour ta réponse rapide.
A vrai dire, j'avais essayé cette syntaxe car tu l'avais déjà proposé dans des réponses à d'autres membres.J'en déduis que mon problème se situe certainement ailleurs. Après une année de formation, les débuts sont difficiles.
Je remets le code avec la fonction verifcases(), en espérant que tu pourras y apporter un élément de réponse. Espérant ne pas te solliciter outre mesure, je te remercie encore pour ta disponibilité.

Code HTML:

<form id='formRegions' name='formRegions' method= "post" action = "PagePrincipale.php">
                <td id='coteform1'>
                   
                    <!--ICI-->    <li class='liregion'>
                    <!--ICI-->    Alsace</li>

Script JAVASCRIPT:

function RegionSelectionnee(nomRegion)
{
if(document.formRegions.region[nomRegion].checked)
{
document.formRegions.region[nomRegion].checked = false;
}
else
{
document.formRegions.region[nomRegion].checked = true;
}

verifCases();
}

function verifCases()
{
nbreRegions =0;
/*boucle de vérification d'au moins une case checkée*/
for (i=0;i<=21;i++)
{
    if(document.formRegions.region[i].checked)
    {
     nbreRegions +=1;
    }
}
if(nbreRegions == 0)
{
document.getElementById("GO").disabled =true;/*---si pas de case checkée, bouton invisble----*/
document.getElementById("effacer").disabled=true;/*---si  pas de case checkée, bouton "effacer" invisble----*/
document.getElementById("france").disabled =false;/*---si  case checkée, bouton "france" visible----*/
}
else
{
document.getElementById("GO").disabled =false;
document.getElementById("effacer").disabled=false;
if(nbreRegions == 22)
{
document.getElementById("france").disabled =true;
}
else
{
document.getElementById("france").disabled =false;
}
}
}

Merci
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
tu dois ne pas faire comme il faut !
          document.formRegions.region[i].checked
          document.formRegions.region[nomRegion].checked
ne peuvent pas fonctionner puisque le name = regions[] et pas region !
sauf qu'il te reste des name region !!!!
respecte strictement la syntaxe ( pas de . et autres ... )
document.formRegions.["region[]"][nbre].checked

change les name ="region" qui restent
pas tout vérifier, il y a peut-être d'autres erreurs !

exemple qui baigne :

    <script>
        function verifCases()
        {    for ( var n= 0;n< document.formRegions["region[]"].length ; n++ )
            {    alert(document.formRegions["region[]"][n].value);    }
        }
    </script>
    <form name ='formRegions'>
               
               
    </form>
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
j'ai même commis l'erreur !
il fallait lire : document.formRegions["region[]"][nbre].checked
Messages postés
6
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
5 juin 2009

re bonjour bul3
je crois avoir compris mon erreur et je ne suis pas fier de moi
Elle se situe au niveau du debugage. Lorsque que je faisais les essais je ne les effectuais qu'avec une seule Checkbox, or une seule Checkbox n'est pas implicitement comprise dans un array. D'ou l'erreur. Je pense que c'est cela; je vais vérifier, car pour l'instant,j'ai repris le code simplifié à part, pour les essais.
Merci de m'avoir apporté ton aide précieuse. @+ Christophe
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
bah... pas de quoi avoir honte non plus !!

j'ai été piégé plusieurs fois ( c'est encore moins glorieux ! )
j'aurais pu y penser dans mes réponses

comme "solution", je créé un 1er élément bidon ( et caché )
et dans la boucle de traitement, je commence à 1 au lieu de 0
ça évite de tester si c'est un array ou pas.