Javascript + formulaire select - A l'AIDE !

Résolu
Edouard73 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   -  
djoyanna Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -
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 :))))
A voir également:

3 réponses

PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
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   Statut Membre Dernière intervention   11
 
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 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
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   Statut Membre Dernière intervention   11
 
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   Statut Membre Dernière intervention   1
 
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