11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Voila je suis en train de faire deux select multiples me servant de vidoir dévidoir....

Le problème est qu'il me faut nommer le select que je veux récupérer de la façon suivante dans mon formulaire:

<select name="select_recup[]"></select>


Avant cela tout allait bien avec ma fonction javascript pour le charger ou le décharger, mais maintenant je me retrouve avec une erreur et cela ne fontionne plus...
Voici le code de ma fonction javascript:


function Deplacer(liste1,liste2)
	{
		if (liste1.options.selectedIndex>=0)
		{
			option=new Option(liste1.options[liste1.options.selectedIndex].text,liste1.options[liste1.options.selectedIndex].value);
			liste2.options[liste2.options.length]=option;
			liste1.options[liste1.options.selectedIndex]=null;
		}
		else
		{
			alert("Aucun élément sélectionné !");
		}
	}

J'essaie donc désormais de me passer en paramètres les id de mes selects mais le soucis c qu'il me faut me servir de l'objet select de javascript, ce que je n'arrive pas à faire....

Si vous avez quelques idées, je suis preneur....
Modifié par pomedeterre (30 Jul 2006 - 13:55)
En fait j'ai réussi à solutionner mon problème, mais merci quand même de s'être penché sur le sujet.

Je mets mon code et je le commente vite fait Smiley langue

La fonction:

function Deplacer(liste1,liste2)
	{
		if (liste1.options.selectedIndex>=0)
		{
			option=new Option(liste1.options[liste1.options.selectedIndex].text,liste1.options[liste1.options.selectedIndex].value);
			liste2.options[liste2.options.length]=option;
			liste1.options[liste1.options.selectedIndex]=null;
		}
		else
		{
			alert("Aucun légume sélectionné");
		}
	}

Et l'appel (le problème venait de là):

<input type="button" value="   +   >>" onclick="javascript: Deplacer(document.forms[0].elements[14],document.forms[0].elements[17]);" />
<br /><br />
<input type="button" value="<<    -   " onclick="javascript: Deplacer(document.forms[0].elements[17],document.forms[0].elements[14]);" />


En fait le problème venait du nom de mon 2e select qui est le suivant:
(Pour rappel les crochets créaient une erreur à l'appel de ma fonction)
<select name="legumes_choisis[]"></select>

J'aurait pu le renommer en :
<select name="legumes_choisis"></select>

et changer son nom à l'envoi de mon formulaire pour rajouter les crochets, ou comme j'ai fait, en l'appelant via son index dans mon formulaire...
Je sais, j'ai un peu galéré pour pas grand chose Smiley confused Smiley sweatdrop ...
Mais maintenant j'y saurait !!! Smiley lol Smiley biggol

Merci, merci quand même...
Modifié par pomedeterre (30 Jul 2006 - 13:35)
Je te conseille quand même plutôt de faire référence à tes éléments de formulaire via leur nom plutôt que leur index.
Tu seras obligé de tout changer si tu dois rajouter un champ...
Je sais j'ai déjà rencontré le cas de figure mais j'en avais déjà conscience
(heureusement sinon j'y serais encore Smiley langue )...

Si cela doit arriver de nouveau je modifie ça correctement...
Je pense même je vais le faire dès que j'ai 5 minutes...

Merci M'sieur de ton bon conseil. Smiley biggrin
Et du coup comment faire efficacement? parce que la je suis devant le meme dilemme mais ca m'embete vraiment de devoir utiliser les indexs. Smiley ohwell

Anyone have an idea? Smiley langue
Bah moi je dirais tu les appelles par leur nom lors de l'appel de la fonction(et pas par les index),
tu enlèves les crochets du nom de celui que tu veux récupérer côté serveur
et tu rajoutes les crochets juste lors de l'envoi du formulaire...

C'est à mon avis ce qu'il y a de mieux, et comme ça tu te sers pas des index.
Voilo Smiley biggrin
c'est ce que je disais là:
a écrit :


J'aurait pu le renommer en :

<select name="legumes_choisis"></select>



et changer son nom à l'envoi de mon formulaire pour rajouter les crochets, ou comme j'ai fait, en l'appelant via son index dans mon formulaire...
Et du coup c'est a quel moment que tu rajoute les crochets? a la reception des infos du formulaire? a l'envoi, je vois pas trop comment l'y rajouter des crochets en fait.

EDIT : tiens j'ai ptet trouvé une piste... dans l'appel de la fonction javascript quand on peut mettre :
'ajax(this.form,contact,document.getElementById(intervenant_client))'
ou intervenant client est un select multiple declaré ainsi :
<select name="intervenant_client[]" id="intervenant_client" multiple="multiple">{html_options options=$globals.classes.contact->nom($infos) selected=$requests.intervenant_client|default:$item.default}</select>


Donc avec kle getelementbyid il envoi bien 'intervenant_client[]' et ne pose pas d'erreur de syntaxe.

Voila m'en suis sorti avec ca, ravi de pouvoir vous donner une info utile Smiley langue
Modifié par Zorian (28 Aug 2006 - 14:09)
Bonjour,
j'ai le meme probleme avec les cochets pour la meme fonction javascript. Seulement je dois obligatoirement garder les cochet pour faire passer en get dans une autre page php la liste des index retenus.
quelle est la solution pour renommer le select a l'envoi la form et de garder toutes les valeurs selectionnées.

thanks pour vos reponses
Hello,
stefSIG a écrit :
j'ai le meme probleme avec les cochets pour la meme fonction javascript. Seulement je dois obligatoirement garder les cochet pour faire passer en get dans une autre page php la liste des index retenus.
Pourras-tu s'il te plaît crééer un nouveau sujet pour ton problème (éventuellement en faisant référence à celui-ci), et en profiter pour nous donner un exemple du code qui pose problème ? Ce sera plus simple pour s'y retrouver. Smiley smile