[JS] Meerdere options van een select meenemen

Pagina: 1
Acties:

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Beste mensen,
Ik heb een script waarmee je twee selectboxen heb. In de linker staan alle velden als options en in de rechter kunnen velden gezet worden.
Ik wil nu dat alle options in de rechter selectbox meegestuurd worden met de andere variabele in het script, maar doordat dus alle waardes, en niet 1, uit de rechter box meegestuurd moeten worden stuit ik op een probleem.
Zouden jullie misschien een mogelijkheid weten waardoor ik zeg maar alle options in de rechter box (selectbox met id = FLoutput1) met 1 variabele kan meesturen???

Hieronder mijn selectboxen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<td width="30%">
             <div align="left">
               <select name="select" id="FLinput1" size="5" multiple="multiple" ondblclick="addToList(document.getElementById('FLoutput1'),document.getElementById('FLinput1').options[document.getElementById('FLinput1').selectedIndex].value,'x')" style="width: 170px;">
                 <?
                $qrySoortgebouw = "SELECT * FROM Soortgebouw ORDER BY [Soort gebouw]";
                if( $resSoortgebouw = odbc_exec($conn, $qrySoortgebouw) )
                {
                  while( $obj = odbc_fetch_array($resSoortgebouw) )
                  { 
                        echo"<option value='".$obj['Soort gebouw']."'>".$obj['Soort gebouw']."</option>";
                  }
                }
                ?>
               </select>
             </div></td>
         <td width="3%">
           <div align="left"><br>
                 <a href="" onclick="addToList(document.getElementById('FLoutput1'),document.getElementById('FLinput1').options[document.getElementById('FLinput1').selectedIndex].value,'x');return false;" >[img]"frm-add.gif"[/img] </a>
                 <br>
                 <a href="" onclick="removeFromList(document.getElementById('FLoutput1'));return false;" > [img]"frm-remove.gif"[/img] </a>
           </div></td>
         <td width="67%">
           <div align="left">
             <select name="listField1" id="FLoutput1" size="5" multiple="mutiple" ondblclick="removeFromList(document.getElementById('FLoutput1'))" style= "width: 170px;" >
               <?
            $qrySoortgebouw = "SELECT * FROM Soortgebouw WHERE [Soortgebouw-id] =
            (SELECT top 1 [Soortgebouw-id] FROM [project-soortgebouw] WHERE [Project-Id] = $Project_id)"; 
            $GebouwS = "";
            if( $resSoortgebouw = odbc_exec($conn, $qrySoortgebouw) )
            {
              while( $obj = odbc_fetch_array($resSoortgebouw) )
              { 
                    //$GebouwS = $obj['Soort gebouw'];
                    echo"<option value='".$obj['Soort gebouw']."'>".$obj['Soort gebouw']."</option>";            
              }
            }
        ?>
               </select>          
           </div></td>

Proud member of the Cosmic Cows


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 22-04 22:07

Bosmonster

*zucht*

Een select box is gemaakt om een selectie uit een aantal items te maken. Niet om een lijst te maken om mee te sturen. Er zijn twee dingen die je kunt doen:

- javascript maken om alle items te selecteren in de rechter select zodra er gesubmit wordt
- javascript maken die netjes de waarden komma-gescheiden bijvoorbeeld (indien het id's zijn) in een hidden input veld zet zodra je iets wijzigt in de rechter box

[ Voor 11% gewijzigd door Bosmonster op 20-10-2005 14:43 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Je wil alle mogelijk opties meesturen in plaats van de geselecteerde optie(s)? :? Om te beginnen: waarom? Je krijgt die opties toch via de database? Die kun je dan toch ook op de volgende pagina weer uit de database trekken? Verder: waarom maak je er dan überhaupt een select box van. En als laatste puntje: als je het dan per se wil, dan zal het waarschijnlijk met een Javascriptje doorgestuurd moeten worden.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Als je [] achter de name van je selectbox zet denkt PHP dat de selectbox een array met values bevat. Stuurt het wel alleen degene mee die ook daadwerkelijk geselecteerd zijn.

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

-NMe- schreef op donderdag 20 oktober 2005 @ 14:44:
Je wil alle mogelijk opties meesturen in plaats van de geselecteerde optie(s)? :? Om te beginnen: waarom? Je krijgt die opties toch via de database? Die kun je dan toch ook op de volgende pagina weer uit de database trekken?
Ik denk dat de ene box alle mogelijkheden bevat en de andere wat er geselecteerd is, zoals je dat wel vaker ziet in applicaties, kan je de onderdelen heen en weer schuiven :)

Maar dit kan bijna niet anders dan met javascript, ik heb iets dergelijks ook ooit geschreven.

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Erkens schreef op donderdag 20 oktober 2005 @ 14:52:
[...]

Ik denk dat de ene box alle mogelijkheden bevat en de andere wat er geselecteerd is, zoals je dat wel vaker ziet in applicaties, kan je de onderdelen heen en weer schuiven :)

Maar dit kan bijna niet anders dan met javascript, ik heb iets dergelijks ook ooit geschreven.
Ja inderdaad, het is ook de bedoeling om ze eventueel weer te kunnen verwijderen, en dat voorbeeld dat je erbij gaf wat jij had gemaakt is eigenlijk ook wat ik heb, alleen dan al met voorgedefineerde waardes.

Maar hoe kan ik dat dan het beste met javascript doen..???
Gewoon ervoor proberen te zorgen dat wanneer er gesubmit wordt alle 'options' geselecteerd worden en in een array ofso worden gegooid?? Maar komt dat dan niet in de knoei met het scriptje om de waardes van de ene kant naar de andere kant te brengen?
Of hebben jullie misschien iets bij de hand wat ik zou kunnen gebruiken?

Proud member of the Cosmic Cows


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

En daarmee gaat dit topic definitief de clientside kant op, en dat hoort in Webdesign & Graphics.

PW>>WG

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Theske schreef op donderdag 20 oktober 2005 @ 15:10:
Maar hoe kan ik dat dan het beste met javascript doen..???
Gewoon ervoor proberen te zorgen dat wanneer er gesubmit wordt alle 'options' geselecteerd worden en in een array ofso worden gegooid??
Je kan altijd in de source kijken van reeds bestaande scriptjes (*hint*) en dan wat aanpassen natuurlijk.
Maar komt dat dan niet in de knoei met het scriptje om de waardes van de ene kant naar de andere kant te brengen?
zodra je zorgt dat je naamgeving goed is, moet er niks aan de hand zijn.

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Erkens schreef op donderdag 20 oktober 2005 @ 15:13:
[...]

Je kan altijd in de source kijken van reeds bestaande scriptjes (*hint*) en dan wat aanpassen natuurlijk.


[...]

zodra je zorgt dat je naamgeving goed is, moet er niks aan de hand zijn.
Ja, dat was ik dan wel van plan te gaan doen, dat opzoeken in andere scripts...
Maar de makkelijkste en efficientste manier is dus gewoon ervoor zorgen dat alles wordt geselecteerd, de selectie in een array stoppen en die erna weer uit te poepen?
Ik had verder in de scripts van jou gekeken, maar daar kon ik iig niks uit opmaken hoe jij ze verder verwerkt naar (waarschijnlijk) je database.
Mijn doel is om uiteindelijk alle input te mailen.

Proud member of the Cosmic Cows


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Je hoeft niks met javascript te selecteren, je kan gewoon door die lijst heen loopen:

JavaScript:
1
2
3
4
5
6
7
8
9
function updateLocationField(){
  var locations = document.getElementById('locations');
  var selectlocations = document.getElementById('selectlocations');
  var tmp = '';
  for (var i = 0; i<=(selectlocations.length-1); i++) {
    tmp += selectlocations.options[i].value + ';';
  }
  locations.value = tmp;
}


Waarbij 'selectlocations' mijn select is en 'locations' is een hidden field welke ik daarna weer uitlees met mijn PHP en split op een ';' (mocht je gebruik maken van een ; dan neem je natuurlijk iets anders ) :)

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Okidooooo, dus tog dat stukje ;)
Dan ga ik daar maar weer eens mee aan de slag
Bedankt iig!!! :)

Proud member of the Cosmic Cows


  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Zo, daar ben ik weer...
Ik ben er weer mee aan de slag gegaan en in principe doet hij wat hij moet doen, hij herkend dat er meerdere zijn en die gooit hij in een variabele maar......... ipv de juiste 'naam' geeft hij steeds maar een 'x' mee.
Wat ik er nu dus in heb staan is het volgende:::
JavaScript:
1
2
3
4
5
6
7
8
9
function updateField(){
  var medewerkers = document.getElementById('medewerkers');
  var FLOutput = document.getElementById('FLOutput');
  var tmp = '';
  for (var i = 0; i<=(FLOutput.length-1); i++) {
    tmp += FLOutput.options[i].value + ';';
  }
  medewerkers.value = tmp;
}

Ik hoop dat dit voldoende is om te zien hoe het komt dat hij niet de echte waarde erin gooit, maar er een X van maakt....
Ik vraag de variabele op dmv:

$Med = $_POST['medewerkers'];

En dit geeft dus bij het selecteren van 3 medewerkers::: x;x;x;

edit::
Hij geeft de namen die al in de lijst stonden (opgehaald vanuit de database) welll goed weer! en de rest dus gewoon met x'jes

[ Voor 13% gewijzigd door Theske op 27-10-2005 12:13 ]

Proud member of the Cosmic Cows

Pagina: 1