Problème de script

zanzibaros Messages postés 6 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 5 juin 2009 - 4 juin 2009 à 16:19
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 5 juin 2009 à 14:05
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

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 juin 2009 à 08:48
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
0
zanzibaros Messages postés 6 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 5 juin 2009
5 juin 2009 à 10:33
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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 juin 2009 à 10:57
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>
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 juin 2009 à 11:32
j'ai même commis l'erreur !
il fallait lire : document.formRegions["region[]"][nbre].checked
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zanzibaros Messages postés 6 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 5 juin 2009
5 juin 2009 à 13:52
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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 juin 2009 à 14:05
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.
0
Rejoignez-nous