Lucalivier
Messages postés4Date d'inscriptiondimanche 28 novembre 2010StatutMembreDernière intervention 2 décembre 2010
-
28 nov. 2010 à 12:13
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 2011
-
5 déc. 2010 à 09:40
Bonjour je suis un petit nouveau et j'utilise joomla. J'essaie d'aider un pot à créer un formulaire du type select avec calcul automatique d'un systéme de points.
exemple :
plusieurs choix de couleur : rouge, vert,blanc etc
<SELECT>
<OPTION VALUE= "rouge">ROUGE</OPTION>
<OPTION VALUE="vert">VERT</OPTION>
<OPTION VALUE="blanc">BLANC</OPTION>
</select>
J'aimerais que lorsque l'internaute choisi une couleur il y ait une case à coté avec une valeur correspondante
exemple : Rouge 1000pts ou vert 2000pts
deuxieme IDEM avec plusieurs choix de forme : rond,triangle, carré
avec rond= 1000pts, triangle= 2000pts, carré=3000pts
Au final j'aimerais avoir un calcul automatique de la premiere et de la deuxiéme valeur
exemple final
la personne choisi rouge ----> 1000 pts
la personne choisi triangle--> 2000 pts
calcul automatique = le résultat est : 3000 pts
En espérant que quelqu un pourra m'aider ! cordialement lucalive
ChasseurDeChimeres
Messages postés292Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention15 janvier 20133 28 nov. 2010 à 13:54
Salut;
Le mieux serait de jouer sur l'attribut css "display" (block/none) de divs contenant les messages que tu souhaites faire apparaitre.
Pour ça il faut récupérer la valeur du champs sélectionné en lançant une fonction sur l'événement "onchange" de ta liste puis choisir, à l'aide d'un switch, quelle div tu vas faire apparaitre :
switch(document.getElementById('id_liste').options[document.getElementById('id_liste').selectedIndex].value) {
case "vert" :
document.getElementById('div_verte').style.display = "block";
case "rouge" :
document.getElementById('div_rouge').style.display = "block";
}
Après tu pourras faire ton addition toujours en récupérant la valeur de ces champs et en la verifiant toujours dans un switch:
var total = 0;
switch(document.getElementById('id_liste').options[document.getElementById('id_liste').selectedIndex].value) {
case "vert" :
total += 2000;
case "rouge" :
total += 1000;
}
switch(document.getElementById('id_liste2').options[document.getElementById('id_liste2').selectedIndex].value) {
case "triangle" :
total += 2000;
case "carre" :
total += 1000;
}
ChasseurDeChimeres
Messages postés292Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention15 janvier 20133 29 nov. 2010 à 09:49
Re;
Alors petite introduction à Javascript :
Javascript te permets d'éxecuter des "fonctions" (ensembles d'instructions) lors d'événements déclenché par l'utilisateur.
Dans ton cas l'événement sera la sélection d'une option de ta liste, pour ça tu vas rajouter un attribut à ta balise html <select>:
<SELECT onchange="setColor()">
ainsi lors de chaque changement de l'option sélectionnée le navigateur éxecutera la fonction "setColor", il te faut donc quelque part dans ta page définir cette fonction :
<script>
function setColor() {
switch(document.getElementById('id_liste').options[document.getElementById('id_liste').selectedIndex].value) {
case "vert" :
document.getElementById('div_verte').style.display = "block";
case "rouge" :
document.getElementById('div_rouge').style.display = "block";
}
}
</script>
Il ne te reste ensuite plus qu'a créer les div "div_verte" et "div_rouge" contenant les messages que tu veux afficher
ex :
Rouge = 1000pts
Essaie déja ça et si ça marche on verra pour comptabilier les points.
bon dev'
Lucalivier
Messages postés4Date d'inscriptiondimanche 28 novembre 2010StatutMembreDernière intervention 2 décembre 2010 30 nov. 2010 à 22:30
Bonjour,
j'ai essayé plein de truc mais au bout g rien ! juste une liste vide.
En ajoutant les "options value" j'ai un défilant simple : voila mon dernier code :
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 5 déc. 2010 à 09:40
Bonjour à tous,
Pour mettre une fonction sur le onchange d'un SELECT il faut que le choix par défaut ne soit pas pertinent, donc il faut ajouter une OPTION de démarrage.
De plus il faut utiliser la value de tes OPTIONs pour stocker la valeur de ces choix.
Au final tu devrais avoir des SELECTs qui ressemble à cela
<select id = "S_COULEUR">
<option value = "0">Choix Couleur</option>
<option value = "1000">ROUGE</option>
<option value = "2000">VERT</option>
<option value = "3000">BLANC</option>
</select>
et
<select id = "S_FORME">
<option value = "0">Choix Forme</option>
<option value = "50">ROND</option>
<option value = "60">TRIANGLE</option>
<option value = "100">CARRE</option>
</select>
Voila pour le minimum au niveau de tes SELECTs
les 3 s'affichent alors que j'aimerais qu'il s'affichent uniquement dans une seule boite ! Pourquoi dans ce cas ne pas utiliser un INPUT dans lequel tu afficherais la value du SELECT quand celui ci change, avec un INPUT pour chaque SELECT, exemple
pour la couleur...
pour la forme...
et tant que l'on y est pour le total...
Voila le décor est planté...
Il te reste à faire une fonction qui sur le onchange des SELECTs remplira ces INPUTs et enchainera sur le calcul et affichage du total
Voici un lien qui est à lire IMPERATIVEMENT, Listes de choix, pour presque tout savoir
;O)