Javascript + formulaire select - A l'AIDE !

Résolu/Fermé
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 - 6 mai 2008 à 23:46
djoyanna Messages postés 16 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 8 septembre 2008 - 13 juin 2008 à 10:14
Bonjour,

voila je reste bloqué sur le java script suivant qui concerne un formulaire select.

voici les codes :

<script language="JavaScript">
function verif()
{
if (document.layers)
{
formulaire = document.forms.forumlaire;
}
else
{
formulaire = document.forumlaire;
}
}

function verifClasse()
{
verif();
if (formulaire.classe.value == "0")
{
alert('Vous devez tout d\'abord choisir une classe!');
formulaire.classe.focus();
}
}

var images = new Array();
images[0] = new Array();
images[1] = new Array("images/gardien.png")
images[2] = new Array("images/conquerant.png")
images[3] = new Array("images/templier.png")
images[4] = new Array("images/barbare.png")
images[5] = new Array("images/eclaireur.png")
images[6] = new Array("images/assassin.png")
images[7] = new Array("images/pretre-de-mitra.png")
images[8] = new Array("images/fleau.png")
images[9] = new Array("images/chaman.png")
images[10] = new Array("images/demonologue.png")
images[11] = new Array("images/necromancien.png")
images[12] = new Array("images/heraut.png")

function remplirAvatar(code)
{
verif();
var lesImages = images[code];

if (code>0)
{
formulaire.avatar.options.length = lesImages.length;
for (i=0; i<lesImages.length; i++)
{
formulaire.avatar.options[i].id = lesImages[i];
formulaire.avatar.options[i].text = lesImages[i];
}
document.monFormulaire.avatar.options.selectedIndex = 0;
}
else
{
formulaire.avatar.options.length = 1;
formulaire.avatar.options[0].id = 0;
formulaire.avatar.options[0].text = "-- choisissez dabors une classe";
}
}
</script>
<script language="JavaScript">
function verif()
{
if (document.layers)
{
formulaire = document.forms.forumlaire;
}
else
{
formulaire = document.forumlaire;
}
}

function verifClasse()
{
verif();
if (formulaire.classe.value == "0")
{
alert('Vous devez tout d\'abord choisir une classe!');
formulaire.classe.focus();
}
}
var cimm = new Array();
cimm[0] = new Array();
cimm[1] = new Array("Soldat")
cimm[2] = new Array("Soldat")
cimm[3] = new Array("Soldat")
cimm[4] = new Array("Maraudeur")
cimm[5] = new Array("Maraudeur")
cimm[6] = new Array("Maraudeur")
cimm[7] = new Array("Pretre")
cimm[8] = new Array("Pretre")
cimm[9] = new Array("Pretre")
cimm[10] = new Array("Mage")
cimm[11] = new Array("Mage")
cimm[12] = new Array("Mage")

function remplirArchetype(code)
{
verif();
var lesCimms = cimm[code];

if (code>0)
{
formulaire.archetype.options.length = lesCimms.length;
for (i=0; i<lesCimms.length; i++)
{
formulaire.archetype.options[i].id = lesCimms[i];
formulaire.archetype.options[i].text = lesCimms[i];
}
document.monFormulaire.archetype.options.selectedIndex = 0;
}
else
{
formulaire.archetype.options.length = 1;
formulaire.archetype.options[0].id = 0;
formulaire.archetype.options[0].text = "-- choisissez dabors une classe";
}
}
</script>

<form name="forumlaire" method="post" action="nouvelle-view.php" enctype="multipart/form-data">
<br />Classe
<select name="classe"
onChange="remplirAvatar(this.options[this.selectedIndex].id); remplirArchetype(this.options[this.selectedIndex].id;">
<option id="0" selected="selected">-- choisissez une classe</option>
<option id="1" value="Gardien">Gardien</option>
<option id="2" value="Conquerant">Conquerant</option>
<option id="3" value="Templier_noir">Templier_noir</option>
<option id="4" value="Barbare">Barbare</option>
<option id="5" value="Eclaireur">Eclaireur</option>
<option id="6" value="Assassin">Assassin</option>
<option id="7" value="Pretre_de_Mitra">Pretre_de_Mitra</option>
<option id="8" value="Fleau_de_Set">Fleau_de_Set</option>
<option id="9" value="Chaman_Ours">Chaman_Ours</option>
<option id="10" value="Demonologue">Demonologue</option>
<option id="11" value="Necromancien">Necromancien</option>
<option id="12" value="Heraut_de_Xolti">Heraut_de_Xolti</option>
</select>

<br />Avatar
<select name="avatar" onFocus="verifClasse();">
<option selected="selected">-- choisissez dabors une classe</option>
</select>

<br />Archetype
<select name="archetype" onFocus="verifClasse();">
<option selected="selected">-- choisissez dabors une classe</option>
</select>
</form>

Mon soucie réside dans le selected Arechetype.

En faite lorsque l'utilisateur selectionne Gardien par exemple, le selected avatar choisi l'image gardien.png j'aimerai aussi qu'il choissie dans le selected archetype l'option Soldat.

Je bloc sur ça. j'arrive super bien à faire avec 2 variables. Mais la y'en a 3 et je ne trouve pas de tutos sur le web qui fais si complexe.

je pense que le soucise vient d'ici : <select name="classe"
onChange="remplirAvatar(this.options[this.selectedIndex].id); remplirArchetype(this.options[this.selectedIndex].id;">

car je les ai testé tout les deux indépendamment, et ils fonctionnent super bien. mais je ne vois pas comment faire d'autre pour que une selection entraine la seconde puis las troisièmement.

merciiiii de tout coeur d'avance pour votre aide :))))

3 réponses

PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
7 mai 2008 à 09:08
Bjr

Déjà il manque une parenthèse fermante à la fin de la fonction remplirArchetype : faute de frappe ?

onChange="remplirAvatar(this.options[this.selectedIndex].id); remplirArchetype(this.options[this.selectedIndex].id);">

Ensuite tes fonctions verifClasse() et verif() sont en double ! supprimes en une version !


Enfin remplace
document.monFormulaire.archetype.options.selectedIndex = 0; 


par
formulaire.archetype.options.selectedIndex = 0; 



Et
document.monFormulaire.avatar.options.selectedIndex = 0; 


par
formulaire.avatar.options.selectedIndex = 0; 


Et ca devrait mieux fonctionner
0
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 11
7 mai 2008 à 09:32
coucou.

merci pour ta réponse. en faite ce sont des lignes qui sont passé à la trappe. mais mon soucie n'est pas reglé pour autant.

Lorsque je selectionne gardien, le selected avatar selectionne l'image concerné mais n'affiche pas pour autant dans archetype soldat :(
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
7 mai 2008 à 10:03
ce code fonctionne

<html>
<head>

<script language="JavaScript"> 
function verif() 
{ 
if (document.layers) 
{ 
formulaire = document.forms.forumlaire; 
} 
else 
{ 
formulaire = document.forumlaire; 
} 
} 

function verifClasse() 
{ 
verif(); 
if (formulaire.classe.value == "0") 
{ 
alert('Vous devez tout d\'abord choisir une classe!'); 
formulaire.classe.focus(); 
} 
} 

var images = new Array(); 
images[0] = new Array(); 
images[1] = new Array("images/gardien.png") 
images[2] = new Array("images/conquerant.png") 
images[3] = new Array("images/templier.png") 
images[4] = new Array("images/barbare.png") 
images[5] = new Array("images/eclaireur.png") 
images[6] = new Array("images/assassin.png") 
images[7] = new Array("images/pretre-de-mitra.png") 
images[8] = new Array("images/fleau.png") 
images[9] = new Array("images/chaman.png") 
images[10] = new Array("images/demonologue.png") 
images[11] = new Array("images/necromancien.png") 
images[12] = new Array("images/heraut.png") 

function remplirAvatar(code) 
{ 

verif(); 
var lesImages = images[code]; 

if (code>0) 
{ 
formulaire.avatar.options.length = lesImages.length; 
for (i=0; i<lesImages.length; i++) 
{ 
formulaire.avatar.options[i].id = lesImages[i]; 
formulaire.avatar.options[i].text = lesImages[i]; 
} 
//document.monFormulaire.avatar.options.selectedIndex = 0; 
formulaire.avatar.options.selectedIndex = 0; 
} 
else 
{ 
formulaire.avatar.options.length = 1; 
formulaire.avatar.options[0].id = 0; 
formulaire.avatar.options[0].text = "-- choisissez dabors une classe"; 
} 

} 

var cimm = new Array(); 
cimm[0] = new Array(); 
cimm[1] = new Array("Soldat") 
cimm[2] = new Array("Soldat") 
cimm[3] = new Array("Soldat") 
cimm[4] = new Array("Maraudeur") 
cimm[5] = new Array("Maraudeur") 
cimm[6] = new Array("Maraudeur") 
cimm[7] = new Array("Pretre") 
cimm[8] = new Array("Pretre") 
cimm[9] = new Array("Pretre") 
cimm[10] = new Array("Mage") 
cimm[11] = new Array("Mage") 
cimm[12] = new Array("Mage") 

function remplirArchetype(code) 
{ 

verif(); 
var lesCimms = cimm[code]; 

if (code>0) 
{ 
formulaire.archetype.options.length = lesCimms.length; 
for (i=0; i<lesCimms.length; i++) 
{ 
formulaire.archetype.options[i].id = lesCimms[i]; 
formulaire.archetype.options[i].text = lesCimms[i]; 
} 
//document.monFormulaire.archetype.options.selectedIndex = 0; 
formulaire.archetype.options.selectedIndex = 0; 
} 
else 
{ 
formulaire.archetype.options.length = 1; 
formulaire.archetype.options[0].id = 0; 
formulaire.archetype.options[0].text = "-- choisissez dabors une classe"; 
} 
} 
</script> 



</head>
<body >

<form name="forumlaire" method="post" action="nouvelle-view.php" enctype="multipart/form-data"> 
<br />Classe 
<select name="classe" 
onChange="remplirAvatar(this.options[this.selectedIndex].id); remplirArchetype(this.options[this.selectedIndex].id);"> 
<option id="0" selected="selected">-- choisissez une classe</option> 
<option id="1" value="Gardien">Gardien</option> 
<option id="2" value="Conquerant">Conquerant</option> 
<option id="3" value="Templier_noir">Templier_noir</option> 
<option id="4" value="Barbare">Barbare</option> 
<option id="5" value="Eclaireur">Eclaireur</option> 
<option id="6" value="Assassin">Assassin</option> 
<option id="7" value="Pretre_de_Mitra">Pretre_de_Mitra</option> 
<option id="8" value="Fleau_de_Set">Fleau_de_Set</option> 
<option id="9" value="Chaman_Ours">Chaman_Ours</option> 
<option id="10" value="Demonologue">Demonologue</option> 
<option id="11" value="Necromancien">Necromancien</option> 
<option id="12" value="Heraut_de_Xolti">Heraut_de_Xolti</option> 
</select> 

<br />Avatar 
<select name="avatar" onFocus="verifClasse();"> 
<option selected="selected">-- choisissez dabors une classe</option> 
</select> 

<br />Archetype 
<select name="archetype" onFocus="verifClasse();"> 
<option selected="selected">-- choisissez dabors une classe</option> 
</select> 
</form> 


</body>
</html>
--

PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
0
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 11
7 mai 2008 à 10:31
Super ça.

en faite le probleme ne résidait pas dans

onChange="remplirAvatar(this.options[this.selectedIndex].id); remplirArchetype(this.options[this.selectedIndex].id);">

mais dans le code java script. je ne devais pas repeter le script et donc enlever cette partie :

}
</script>
<script language="JavaScript">
function verif()
{
if (document.layers)
{
formulaire = document.forms.forumlaire;
}
else
{
formulaire = document.forumlaire;
}
}

function verifClasse()
{
verif();
if (formulaire.classe.value == "0")
{
alert('Vous devez tout d\'abord choisir une classe!');
formulaire.classe.focus();
}

et remplacer mes erreurs :

document.monFormulaire.avatar.options.selectedIndex = 0; par formulaire.avatar.options.selectedIndex = 0;

et

document.monFormulaire.archetype.options.selectedIndex = 0; par formulaire.archetype.options.selectedIndex = 0;

super. merci pour ton aide. ça ouvre maintenant la possibilité à répéter l'opération indéfiniment.
0
djoyanna Messages postés 16 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 8 septembre 2008 1
13 juin 2008 à 10:14
bonjour
je m'adresse a vous car je nai pas encore obtenu de solution

me voici avec un souci :( dans un formulaire de question reponse dynamique dans l'affichage de chaque liste de reponse il y a une option autre qui permet d'afficher un champs text au cas ou les reponses ne conviennent pas a lutilisateur. j'appelle dans ma bdd les question de la table question puis les reponses dans la table reponse qui ont en commun l'id question. le nombre de question n'est donc pas fixeµ.
Dans chaque question il y a une zone 'autre' individuelle .
la fonction js qui sui me permet de rendre visible ou non le champs text quan l'utilisateur clik sur autre.
voici ma fonction :

function RendVisibleAutre(texte)
{

if (texte=="autre")
document.getElementById("autre_reponse").style.visibility= 'visible';
else
document.getElementById("autre_reponse").style.visibility= 'hidden';
}
</script>

voici son utilisation :

<?php
$i=0;
$i=i++;
echo "<SELECT size=1 onchange='RendVisibleAutre(this.value,autre_reponse".$i.")'
name='reponse".$nbQuestion."'> ";
foreach ($lResult4 as $row4)
{
//affichage des reponse possible dasn option
$reponse=$row4['id_reponse'];
echo "\n".'<option value='.$row4['id_reponse'].'>';
echo $row4['intitule_reponse'];
//echo $reponse;
echo '</option>';

}
echo "<option value='autre'>autre</option></SELECT>";
?>
<p><div id='autre_reponse"<?echo $i?>"' style="visibility:hidden;position:absolute;">
<input type="text" name='autre'></div>
</p>

ca ne fonctionne pas :(
cela vien peut etre du fait que je ne passe pas la variable $i dans la fonction js?
ou alors j'ai mal formuler ma fonction???
je ne voi pas... svpp ... help ...
0