11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai actuellement un formulaire comprenant un mutliselect de langage...
Donc j'ai pas mal de champ, j'aimerai faire un script en js permettant d'afficher les champs deja selectionnés...

Merci beaucoup.

voici le bout de code de mon formulaire:
 echo'<SELECT NAME="langue[]" MULTIPLE SIZE=8 >';
		$rep_language= mysql_query("SELECT * FROM langue"); 
		while($donnees_language= mysql_fetch_assoc($rep_language))
			{
				echo'<OPTION VALUE="'.$donnees_language['id'].'">'.$donnees_language['nom'].'';
			}
			echo'</SELECT>';

Modifié par Killion (14 Jan 2008 - 17:40)
pourquoi du js $_POST['langue'] contient tes résultats.

dans le while
echo'<OPTION VALUE="'.$donnees_language['id'].'">'.$donnees_language['nom'].'';
			
devient 

echo'<OPTION VALUE="'.$donnees_language['id'].'" 
 '.((in_array($donnees_language['id'],$_POST['langue']))?"selected":"").' >'.$donnees_language['nom'].'';


et c'est fait.

js ne sert a rien les données selectionnées sont passé par le serveur dans post.

Et si tu veux rétablir un état correspondant au dernier choix apres des manip coté client un input type='reset' fera l'affaire
Modifié par CPascal (13 Jan 2008 - 15:36)
mmm j'ai du mal m'exprimer en fait ^^

Je souhaitera qu'a chaque fois que l'utilisateur selectionne une reponse, celle ci apparaisse au dessus du champ de selection, de sorte qu'il sache en permanence ce qu'il a deja selectionné...
si un resultat a chaque soumission te conviens affiche le contenu du tableau $_POST['langues'].

<div id='rappel'>
foreach ($_POST['langues'] as $val ) {
  echo $val.",";
}
</div>




sinon si tu veux du temps réel c'est du js. je laisse çà a ceux qui veulent.
Modifié par CPascal (13 Jan 2008 - 16:11)
Tu mets un onchange sur ton select qui appelle une fonction,


<SELECT NAME="langue[]" MULTIPLE SIZE=8 onchange="maj();">


et tu fais un truc du genre :

function maj(){
var texte='';
for (var j=0; j<document.forms[0].elements[0].options.length; j++) {
  if ( (document.forms[0].elements[0].options[j].selected) && (document.forms[0].elements[0].options[j].value!='') ){
     texte=texte+document.forms[0].elements[0].options[j].text+";";
     // ou options[j].value si tu préfères
  }// finsi
}// fin for
texte = texte.substr(0,(texte.length-1));
}// fin fonction


Là, dans la variable texte, tu auras les options sélectionnées séparées par des ";" , à toi d'adapter en fonction.

à+
Nico

P.S : en minuscules et avec les attributs, c'est mieux le

<select name="langue[]" multiple="multiple" size="8" onchange="maj();">

Modifié par Nico3333fr (14 Jan 2008 - 13:56)