Formulaire et options - Ça fonctionne pas..

isarennt Messages postés 6 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 28 juin 2008 - 27 juin 2008 à 23:31
isarennt Messages postés 6 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 28 juin 2008 - 28 juin 2008 à 19:24
Bonjour!

J'ai un problème de code... lorsque je créé dynamiquement des options, je n'arrive pas à mettre un message d'erreur (soit une image, dans le span avec innerhtml) lorsqu'aucun des États ou des Provinces n'est choisi. Et lorsque je valide avec mes return sur mon bouton submit, la province choisi s'efface alors que le formulaire est en false (le reste n'était pas valide)...

Je pioche là-dessus depuis 4 jours et j'y arrive juste pas... est-ce que quelqu'un peut m'aider ?

Merci !!!!


HTML :

<select name="Pays" onchange="validationPays()"><option value="">Faites votre choix</option><option>Canada</option><option>État-Unis</option></select><select name="provetat"><option>Faites votre choix</option></select>

Javascript:

function validationPays()
{
var Pays = document.formulaire.Pays.selectedIndex;
var valPays = document.getElementById("validationPays");
var valPEP = document.getElementById("valProv");
var ProvEtat = document.formulaire.provetat.options;

var vide = new Array();
var canada = new Array();
var usa = new Array();

vide[0] = new Option("Faites votre choix");

canada[0] = new Option("Faites votre choix");
canada[1] = new Option("Alberta", "AB");
canada[2] = new Option("Colombie-Britannique", "BC");
canada[3] = new Option("Île-du-Prince-Édouard", "PE");
canada[4] = new Option("Manitoba", "MB");
canada[5] = new Option("Nouveau-Brunswick", "NB");
canada[6] = new Option("Nouvelle-Écosse", "NS");
canada[7] = new Option("Ontario", "ON");
canada[8] = new Option("Québec", "QC");
canada[9] = new Option("Saskatchewan", "SK");
canada[10] = new Option("Terre-Neuve-et-Labrador", "NL");

usa[0] = new Option("Faites votre choix");
usa[1] = new Option("New York", "NY");
usa[2] = new Option("Maine", "ME");
usa[3] = new Option("New Hampshire", "NH");
usa[4] = new Option("Vermont", "VT");

for (i = 0; i < document.formulaire.provetat.options.length; i++)
{
document.formulaire.provetat.options.length = 0;
}

if(Pays == 2)
{
for (i = 0; i < usa.length; i++)
{
ProvEtat[i] = usa[i];
}
valPays.innerHTML = '';
return true;
}

else if(Pays == 1)
{
for (i = 0; i < canada.length; i++)
{
ProvEtat[i] = canada[i];
}


valPays.innerHTML = '';
return true;
}

else
{
for (i = 0; i < vide.length; i++)
{
ProvEtat[i] = vide[i];
}
valPays.innerHTML = '';
return false;
}
}

8 réponses

isarennt Messages postés 6 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 28 juin 2008
27 juin 2008 à 23:34
oops.. comment envoyer un code.. retest...

<select name="Pays" onchange="validationPays()"><option value="">Faites votre choix</option><option>Canada</option><option>État-Unis</option></select><select name="provetat"><option>Faites votre choix</option></select>

Javascript: 

function validationPays()
{	
var Pays = document.formulaire.Pays.selectedIndex;
var valPays = document.getElementById("validationPays");
        var valPEP = document.getElementById("valProv");
var ProvEtat = document.formulaire.provetat.options;

var vide = new Array();
var canada = new Array();
var usa = new Array();

vide[0] = new Option("Faites votre choix");

canada[0] = new Option("Faites votre choix");
canada[1] = new Option("Alberta", "AB");
canada[2] = new Option("Colombie-Britannique", "BC");
canada[3] = new Option("Île-du-Prince-Édouard", "PE");	
canada[4] = new Option("Manitoba", "MB");
canada[5] = new Option("Nouveau-Brunswick", "NB");
canada[6] = new Option("Nouvelle-Écosse", "NS");
canada[7] = new Option("Ontario", "ON"); 
canada[8] = new Option("Québec", "QC"); 
canada[9] = new Option("Saskatchewan", "SK");
canada[10] = new Option("Terre-Neuve-et-Labrador", "NL");
 
usa[0] = new Option("Faites votre choix");
usa[1] = new Option("New York", "NY"); 
usa[2] = new Option("Maine", "ME"); 
usa[3] = new Option("New Hampshire", "NH"); 
usa[4] = new Option("Vermont", "VT"); 

for (i = 0; i < document.formulaire.provetat.options.length; i++) 
{
document.formulaire.provetat.options.length = 0;
}

if(Pays == 2)
{
for (i = 0; i < usa.length; i++) 
{
ProvEtat[i] = usa[i];
}
valPays.innerHTML = '';
return true;
}

else if(Pays == 1)
{
for (i = 0; i < canada.length; i++) 
{
ProvEtat[i] = canada[i];
}


valPays.innerHTML = '';
return true;
}

else
{
for (i = 0; i < vide.length; i++) 
{
ProvEtat[i] = vide[i];
}
valPays.innerHTML = '';
return false;
}
}
0
isarennt Messages postés 6 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 28 juin 2008
27 juin 2008 à 23:34
bon je suis vraiment newbie..
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juin 2008 à 06:21
Bonjour,

affiche ta source dans un  éditeur de texte quelconque
et fait un copié/collé.
pas depuis le logciel que tu utilises.

ou alors clique d'abord sur [infomsg.aspx?ajout=&ID=1161818&txtmode=0 Si vous n'arrivez pas à saisir votre message, CLIQUEZ ICI pour revenir à une "TextBox classique"]et ne laisse pas brut le texte copié, met le un ch'tit poil en forme

que ce soit lisible.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juin 2008 à 09:40
mais si j'ai compris ton souci, c'est 2 select liés ?
le choix dans le 1er select entraîne des options différentes dans le 2ème.
si c'est ça : ch'tiot exemple ici ( javascript, php, et/ou ajax )
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0

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

Posez votre question
isarennt Messages postés 6 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 28 juin 2008
28 juin 2008 à 16:23
Merci vraiment beaucoup pour ta réponse! Maintenant, tout est fonctionnel sauf un seul truc : lors du submit (qui vérifie que toutes mes functions sont valides) si j'avais sélectionné une province ou un état, il remet l'option au premier (soit Faites votre choix) et donne un message d'erreur. Comment faire en sorte qu'il garde en mémoire l'option sélectionnée?

Je met juste le javascript, je pense pas que le HTML soit important.

Sauf pour dire que mon select pays s'appelle Pays (sur lequel roule "validationPays()") et celui pour les État ou Provinces s'appelle provetat (sur lequel roule onchange= "validationPE()")

J'essaie la technique du copier/coller à partir d'un document texte. Voyons voir...

function validationPays()
{   
    var Pays = document.formulaire.Pays.selectedIndex;
    var valPays = document.getElementById("validationPays");
   
    var vide = new Array();
    var canada = new Array();
    var usa = new Array();
   
    vide[0] = new Option("Faites votre choix");
   
    canada[0] = new Option("Faites votre choix");
    canada[1] = new Option("Alberta", "AB");
    canada[2] = new Option("Colombie-Britannique", "BC");
    canada[3] = new Option("Île-du-Prince-Édouard", "PE");   
    canada[4] = new Option("Manitoba", "MB");
    canada[5] = new Option("Nouveau-Brunswick", "NB");
    canada[6] = new Option("Nouvelle-Écosse", "NS");
    canada[7] = new Option("Ontario", "ON");
    canada[8] = new Option("Québec", "QC");
    canada[9] = new Option("Saskatchewan", "SK");
    canada[10] = new Option("Terre-Neuve-et-Labrador", "NL");

    usa[0] = new Option("Faites votre choix");      
    usa[1] = new Option("New York", "NY");
    usa[2] = new Option("Maine", "ME");
    usa[3] = new Option("New Hampshire", "NH");
    usa[4] = new Option("Vermont", "VT");

    for (i = 0; i < document.formulaire.provetat.options.length; i++)
    {
        document.formulaire.provetat.options.length = 0;
    }

    if(Pays == 2)
    {
        for (i = 0; i < usa.length; i++)
        {
            document.formulaire.provetat.options[i] = usa[i];
        }
       
        valPays.innerHTML = '';
        return true;
    }
    else if(Pays == 1)
    {
        for (i = 0; i < canada.length; i++)
        {
            document.formulaire.provetat.options[i] = canada[i];
        }
        valPays.innerHTML = '';
        return true;
    }
    else
    {
        for (i = 0; i < vide.length; i++)
        {
            document.formulaire.provetat.options[i] = vide[i];
        }
        valPays.innerHTML = '';
        return false;
    }
}

function validationPE()
{
     var pays = document.formulaire.Pays.selectedIndex;
    var provetat = document.formulaire.provetat.selectedIndex;
    var valProv = document.getElementById("valProv");
   
    if(pays == 0)
    {
        valProv.innerHTML = '';
        return true;
    }
   
    else
    {
        if(provetat == 0)
        {
            valProv.innerHTML = '';
            return false;
        }
        else
        {
            valProv.innerHTML = '';
            return true;
        }
    }   
}
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juin 2008 à 16:37
quand tu valides le formulaire, c'est pour appeler un php je suppose
quand tu renvoie la réponse avec celui-ci, met l'option selected
( tu sais laquelle puisque $-POST ou $_GET ['name_select']  est là )
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
isarennt Messages postés 6 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 28 juin 2008
28 juin 2008 à 16:40
euh non.. je suis vraiment débutante et je suis pas rendue au PHP... je valide les return true / false de toutes mes fonctions..
0
isarennt Messages postés 6 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 28 juin 2008
28 juin 2008 à 19:24
Problème résolu !

J'ai créé cette fonction qui est celle qui valide le pays sélectionné (dans le submit) plutôt que celle qui remplit le deuxième option. Ainsi, province/etat reste sélectionné.

function validationPaysSelected()
{
     var pays = document.formulaire.Pays.selectedIndex;
    var valPays = document.getElementById("validationPays");
   
    if(pays > 0)
    {
        valPays.innerHTML = '';
        return true;
    }
       
    else
    {
        valPays.innerHTML = '';       
        return false;
    }   
}

Merci quand même pour ton temps, bultez!!!
0
Rejoignez-nous