[JQuery] val() avec select multiple

val() avec select multiple [JQuery] - HTML/CSS - Programmation

Marsh Posté le 01-10-2009 à 15:26:37    

Y a-t-il un moyen pour récupérer la sélection d'un select multiple avec jquery ?
Jarodxxx dit seulement de faire attention à val() avec des select multiple mais ne donne aucune solution :/
 
LISTE_FORMULE est mon select multiple
avec $('#LISTE_FORMULE').val() --> j'obtiens du vide
avec $('#LISTE_FORMULE').val()[0] --> j'obtiens du vide
avec $('#LISTE_FORMULE[0]').val() --> j'obtiens undefined
avec $('#LISTE_FORMULE').val([0]) --> j'obtiens [object Object]
avec $('#LISTE_FORMULE').val(["CHAMP1"]) --> j'obtiens [object Object]
 
vous auriez une idée ?
PS : je débute complètement en ajax, jquery et compagnie


Message édité par sire de Botcor le 01-10-2009 à 15:43:01

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 01-10-2009 à 15:26:37   

Reply

Marsh Posté le 01-10-2009 à 15:46:29    

le val fonctionne très bien. il te renvoie un tableau des éléments sélectionnés.
 
tu dois avoir un pb ailleurs... tu peux nous montrer ton code?

Reply

Marsh Posté le 02-10-2009 à 09:30:39    

merci de te pencher sur mon problème :jap:
 
je ne sais pas trop quel bout de code te donner ?
je fais juste ça :

Code :
  1. $('#liste_formule').load('ics.php',{idact:'%IDACT_FORMULE_LISTE_AJAX%',CHAMP_SEL_FORMULE:$('#LISTE_FORMULE').val()});
  2. alert($('#LISTE_FORMULE option[selected]').val());


Message édité par sire de Botcor le 02-10-2009 à 10:29:13

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 02-10-2009 à 10:24:27    

le "option[selected]" ne sert à rien et est même sans doute la cause du pb...

Reply

Marsh Posté le 02-10-2009 à 10:30:30    

pataluc a écrit :

le "option[selected]" ne sert à rien et est même sans doute la cause du pb...


oui pardon, c'était mon dernier essai que je peux ajouter à la liste de ceux qui renvoient "undefined"


Message édité par sire de Botcor le 02-10-2009 à 10:31:13

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 02-10-2009 à 10:35:26    

renvoie plutot le code html de ton select.

Reply

Marsh Posté le 02-10-2009 à 10:47:03    

pataluc a écrit :

renvoie plutot le code html de ton select.


ok c'est ça :

Code :
  1. <div id="liste_formule">
  2. <select multiple="multiple" name="LISTE_FORMULE[]" size="7" onchange="idg_afficher_btn()" onkeyup="idg_afficher_btn()" id="liste_fu">
  3. <option value="35">FORMULE1 (2009)</option>
  4. <option value="53">FORMULE2 (2009)</option>
  5. <option value="52">FORMULE3 (2009)</option>
  6. </select>
  7. </div>


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 02-10-2009 à 11:04:07    

ok c'est bien ce que je pensais. il faut te baser sur l'id et pas le name, donc

Code :
  1. alert($('#liste_fu').val());

Message cité 1 fois
Message édité par pataluc le 02-10-2009 à 11:04:20
Reply

Marsh Posté le 02-10-2009 à 11:06:40    

pataluc a écrit :

ok c'est bien ce que je pensais. il faut te baser sur l'id et pas le name, donc

Code :
  1. alert($('#liste_fu').val());



malheureusement j'ai essayé toutes les combinaisons avec liste_fu et j'ai les mêmes résultats :/


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 02-10-2009 à 11:24:25    

là je viens d'essayer de mettre un settimeout après l'affichage des listes et avant le alert() et j'obtiens un résultat original : null :/


Message édité par sire de Botcor le 02-10-2009 à 11:24:40

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 02-10-2009 à 11:24:25   

Reply

Marsh Posté le 02-10-2009 à 11:28:52    

perso quand je mets le code suivant:
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html> 
  3.   <head> 
  4.     <title>
  5.     </title> 
  6.     <script type="text/javascript" src="jquery.js"></script>
  7.     <script type="text/javascript">
  8.    
  9.     function test(){         
  10.       alert($('#liste_fu').val());
  11.     }
  12.    
  13.     </script>
  14.    
  15.   </head> 
  16.   <body>
  17.     <div id="liste_formule">
  18.       <select multiple="multiple" name="LISTE_FORMULE[]" size="7" onchange="idg_afficher_btn()" onkeyup="idg_afficher_btn()" id="liste_fu">
  19.         <option value="35">FORMULE1 (2009)</option>
  20.         <option value="53">FORMULE2 (2009)</option>
  21.         <option value="52">FORMULE3 (2009)</option>
  22.       </select>
  23.     </div>
  24.     <a href='javascript:test()'>test</a>
  25.   </body>
  26. </html>


 
j'obtiens bien ma liste en cliquant sur le lien test:
http://hfr-rehost.net/self/pic/fa48dbd0ce0ad8db2e0334f7cff8f5c9ef91a3c9.png
 
 
:spamafote:

Reply

Marsh Posté le 02-10-2009 à 11:46:18    

effectivement, mon problème doit venir d'un schmilblick dans la complexité de la page que j'ai vraiment du mal à comprendre :/
 
merci de ton aide en tout cas :jap:


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 02-10-2009 à 12:01:40    

si tu peux balancer plus de code (genre la page entière, sauf si elle est énorme ou privée) on peut peut être trouver le problème. sinon je te conseille un debugger javascript style firebug (extension firefox) qui te permet de faire du pas à pas dans ton javascript.

Reply

Marsh Posté le 02-10-2009 à 17:01:05    

J'ai (enfin) trouvé la cause du problème :)
 
en fait, la liste étant générée par ajax/jquery, elle apparaissait sur la page en retard et du coup mon alert() s'exécutait trop tôt
 
avec un setTimeout de 2000ms, ça fonctionne :D


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 02-10-2009 à 17:07:20    

pas mal! ^^

Reply

Marsh Posté le 02-10-2009 à 21:47:39    

sire de Botcor a écrit :

J'ai (enfin) trouvé la cause du problème :)
 
en fait, la liste étant générée par ajax/jquery, elle apparaissait sur la page en retard et du coup mon alert() s'exécutait trop tôt
 
avec un setTimeout de 2000ms, ça fonctionne :D


nan mais ton dawa tu le fais sur la callback de la requete ajax, là ce que tu fais c'est dégueulasse


---------------
Blablaté par Harko
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed