[JS] Ajouter des champs options à mon select [ - Job's Done - ]

Ajouter des champs options à mon select [ - Job's Done - ] [JS] - HTML/CSS - Programmation

Marsh Posté le 09-10-2002 à 11:38:08    

voici le code que j'ai :  
 

<script language="javascript"><!--
 
var R01= new Array("Agriculture","Pêche","Navigation maritime et fluviale" );
 
function combo(Rub) {
var select=window.document.formcv2.Rubrique.selectedIndex;
window.document.formcv2.SRubrique.write("<option>" + select + "</option>" );   [#ff0000]<-- ligne 32[/#ff0000]
}
 
// -->
</script>
</head>
<body>
 
<form name="formcv2" method="post" action="cv3.php">
 
<select name="Rubrique" class="Field-Caps" onChange="combo('Rub')";>
 <option>----- votre secteur d'activité -----</option>
 <option value="R01">agriculture, pêche, navigation maritime et fluviale</option>
</select>
 
<select name="SRubrique" class="Field-Caps">
</select>
 
</form>
</body>
</html>


 
quand je fait ça, il me dit :  
Erreur ligne 32 : Cet objet ne gère pas cette propriété ou cette méthode
 
en faite, ce que je voudrais, c'est qu'il m'ajoute les valeurs qui se trouvent dans mon Array en fonction de ce qui est choisis par le 1er select...
mais je ne connais pas la syntaxe excate.
de plus, je ne sais pas comment lui dire :  

Code :
  1. while (une valeur dans l'array) {
  2. tu ajoute les valeurs en tant que <option></option>
  3. }


Message édité par xkamui le 09-10-2002 à 16:17:16
Reply

Marsh Posté le 09-10-2002 à 11:38:08   

Reply

Marsh Posté le 09-10-2002 à 12:07:26    

Pour rajouter des options à la fin, fais un truc du genre :
 

Code :
  1. var select = window.document.formcv2.Rubrique;
  2. select.options[select.options.length] = new option("texte", "value" );

Reply

Marsh Posté le 09-10-2002 à 12:22:50    

petite mise a jour du script :  
 

Code :
  1. <html>
  2. ...
  3. var Rub = new Array("R01","R02" );
  4. function combo() {
  5. var select = window.document.formcv2.Rubrique;
  6. var s = select.selectedIndex;
  7. for (var i=0;i<Rub[s].length;i++) {
  8. var txt = Rub[s];
  9. select.options[select.options.length] = new options(txt[i], "S" + txt + i);   <-- ligne 31
  10. }
  11. }
  12. </head><body>
  13. <select name="Rubrique" class="Field-Caps" onChange="combo()";>
  14. ...
  15. </body></html>


 
message d'erreur :  
ligne 31 : 'options' est indéfini


Message édité par xkamui le 09-10-2002 à 12:25:00
Reply

Marsh Posté le 09-10-2002 à 12:49:47    

xkamui a écrit a écrit :

petite mise a jour du script :  
 

Code :
  1. select.options[select.options.length] = new Option(txt[i], "S" + txt + i);
  2. }


 




 
et les PM ca le fait pas  :non:

Reply

Marsh Posté le 09-10-2002 à 13:08:27    

ok, soz pour le PM
 
mais j'ai donc fait ce qui était écrit : GÉNIAL, plus d'erreur...
 
maintenant, le tout c'est que je réussisse à écrire quelque chose, car rien ne s'affiche dans mon select...  :cry:

Reply

Marsh Posté le 09-10-2002 à 13:27:21    

voici où j'en suis :  
 
j'ai fait quelques tests avec des document.write :  
 

Code :
  1. function combo() {
  2. var select = window.document.formcv2.Rubrique;
  3. var s = select.selectedIndex;
  4. for (var i=0;i<=Rub[s].length;i++) {
  5. var txt = Rub[s];
  6. //select.options[select.options.length] = new Option(txt[i], "S" + txt + i);  
  7. document.write("s => " + s + "<br>" );
  8. document.write("Rub[s] => " + Rub[s] + "<br>" );
  9. document.write("i => " + i + "<br>" );
  10. document.write("txt => " + txt + "<br>" );
  11. document.write("txt[i] => " + txt[i] + "<br><br><br>" );
  12. }
  13. }


 
seulement, deux petits problèmes à ça
 
1. voici les résultats :  

s => 15                [#0000ff]<-- ça c'est bon[/#0000f]
Rub[s] => R15          [#0000ff]<-- ça c'est bon[/#0000ff]
i => 0                 [#0000ff]<-- ça c'est bon[/#0000ff]
txt => R15             [#0000ff]<-- ça c'est bon[/#ff0000]
txt[i] => undefined    [#ff0000]<-- ça c'est pas très bon[/#ff0000]


 
en effet, normalement, txt[i] devrais avoir la valeur correspondante à son index dans le tableau créée plus tôt (voir haut du topic).
 
2. quelque soit l'index choisi, la valeur de Rub[s].length est égale à 3... alors que pour certains index, la valeur devrait être de 1...


Message édité par xkamui le 09-10-2002 à 13:28:19
Reply

Marsh Posté le 09-10-2002 à 13:54:44    

lorill a écrit a écrit :

 
 
et les PM ca le fait pas  :non:  




 
C'est quoi; "les PM" ???

Reply

Marsh Posté le 09-10-2002 à 13:55:33    

Private Messages... mais passons, lol

Reply

Marsh Posté le 09-10-2002 à 14:10:26    

Reply

Marsh Posté le 09-10-2002 à 14:29:06    


 
ok, mais ça ne répond pas trop aux nouvelles questions...

Reply

Marsh Posté le 09-10-2002 à 14:29:06   

Reply

Marsh Posté le 09-10-2002 à 14:34:41    

euh ton Rub, c'est le tableau qui contient des chaines ?
et Rub[index].length ca passe ? faudrait mettre .length() plutôt.  
Ou alors j'ai encore loupé la moitié du message  :??:

Reply

Marsh Posté le 09-10-2002 à 14:41:48    

voici :  
 

Code :
  1. var Rub = new Array("","R01","R02" );
  2. var R01 = new Array("Agriculture","Pêche","Navigation maritime et fluviale" );
  3. var R02 = new Array("Agroalimentaire","Habillement, Cuir, Textile","Bois, Ameublement, Papier-carton","Industrie graphiques" );
  4. var s = window.document.formcv2.Rubrique.selectedIndex;


 
Rub[s] est donc égal à vide ou R01 ou R02.
jusque là, pas de pb
par contre,e nsuite, je met ce valeur dans une variable txt
et dans un for, je dis :  
txt[i] (où txt vaut vide ou R01 ou R02 et i est une valeur incrémentée)... et là, crac (ou patatra pour certain :)) ça me dit que txt[i]=undefined

Reply

Marsh Posté le 09-10-2002 à 14:49:53    

xkamui a écrit a écrit :

 
txt[i] (où txt vaut vide ou R01 ou R02 et i est une valeur incrémentée)... et là, crac (ou patatra pour certain :)) ça me dit que txt[i]=undefined




 
ben c'est normal, vu tu as i <= a la taille du texte...  
txt = "RS0";
txt.length() => 3
txt[0] => R
txt[1] => S
txt[2] => 0
txt[3] => BLAM !

Reply

Marsh Posté le 09-10-2002 à 14:56:47    

ahhhhh ok.....  :pt1cable:  
 
alors comment je peux lui dire : longueur du nombre d'entrée dans mon tableau (array) ??

Reply

Marsh Posté le 09-10-2002 à 15:15:09    

xkamui a écrit a écrit :

ahhhhh ok.....  :pt1cable:  
 
alors comment je peux lui dire : longueur du nombre d'entrée dans mon tableau (array) ??




 
uh ? ca veut dire quoi "longueur du nombre d'entrée" ?  
si comme je le pense du veux dire nombre d'entrées du tableau, c'est tout simplement leTableau.length

Reply

Marsh Posté le 09-10-2002 à 16:01:03    

voilà ma nouvelle fonction :  

Code :
  1. function combo() {
  2. // définition du formulaire
  3. var objform = window.document.formcv2;
  4. // définition du numéro du choix
  5. var s = objform.Rubrique.selectedIndex;
  6. // reconnaissance du tableau
  7. var tablo = eval (Rub[s]);
  8. for (var i = 0; i<tablo.length; i++) {
  9. var newoption = new Option(tablo[i], "S" + Rub[s] + i);
  10. objform.SRubrique.options[i+1] = newoption;
  11. }
  12. }


 
par contre un dernier problème (enfin j'éspère)...
il se trouve que, si je choisis un index avec 5 valeurs (a,b,c,d,e), les champs de l'autre select sont correctement només :  

Code :
  1. <o>a</o>
  2. <o>b</o>
  3. <o>c</o>
  4. <o>d</o>
  5. <o>e</o>


 
par contre, si je prend un autre index dans la foulée, avec 3 valeurs (1,2,3), ça change pas tout :  

Code :
  1. <o>1</o>
  2. <o>2</o>
  3. <o>3</o>
  4. <o>d</o>
  5. <o>e</o>


ma question est simple, comment mettre un reset sur le champ SRubrique, que je placerais, je pense, avant mon 'for'


Message édité par xkamui le 09-10-2002 à 16:01:36
Reply

Marsh Posté le 09-10-2002 à 16:02:58    

Srubrique.options.length = 0 devrait suffire

Reply

Marsh Posté le 09-10-2002 à 16:06:31    

j'ai mis objform.SRubrique.length = 0; et ça marche
 
arghh grilled lol (mais content de commencer à comprendre...)


Message édité par xkamui le 09-10-2002 à 16:07:28
Reply

Sujets relatifs:

Leave a Replay

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