27. januar 2006 - 18:31Der er
12 kommentarer og 1 løsning
Multiple selectbox
Jeg har et lille problem med at pakke data korrekt ud sendt via en form med en selectbox med multiple mulighed.
Mit problem er at der kun modtages den første selction også selvom der er valgt flere.
Jeg har læst at det kan løses vha. at navngive selecten "myselect[]", men af forskellige årsager (problemer med et javascript), så kan jeg ikke tillade mig at bruge [] i mit script.
Jeg har hørt at alle data faktisk sendes over, men af de af en eller anden grund ikke opfattes som et array af php'en - og spørgsmålet er om jeg kan gøre noget således at php opfatter data korrekt?
Du nævner at du ikke kan benytte myselect[] på grund af javascript. Hvis du på din select bruger name="myselect[]" og id="myselect" så vil du stadig kunne bruge din javascript på myselect alene... men når du POST'er vil alle valgte blive sendt med som et array.
Selectdelen af formen ser sådan her ud: <select multiple name="select" size='8' style="width:200px"> <option value='1'>Bruger1</option> <option value='2'>Bruger2</option> </select>
Jeg får følgende fra din kode: Array ( [select] => 3 )
Jeg er ikke vil med at skulle have forskellig id og name!
Formen submittes med følgende: SelectAll(this.form.select);submit()
Og SelectAll funktionen er følgende: function SelectAll(fromObject) { for (var i=0, l=fromObject.options.length;i<l;i++) { fromObject.options[i].text,fromObject.options[i].selected = true; } }
Det forstår jeg ikke! Hvad om du retter: <select multiple name="select" size='8' style="width:200px"> til: <select id="myselect" multiple name="select" size='8' style="width:200px"> og så bruger: SelectAll(this.form.myselect);submit()
hmm fandt en løsning tror jeg - men måske en af jer gad kigge scriptet igennem for at se om løsningen er fornuftig? Derudover kan I også ligge svar - de der vil honoreres med point :-D
java script: <script type="text/javascript"> function deleteOption(object,index) { object.options[index] = null; } function addOption(object,text,value) { var defaultSelected = true; var selected = true; var optionName = new Option(text, value, defaultSelected, selected) object.options[object.length] = optionName; } function copySelected(fromObject,toObject) { for (var i=0, l=fromObject.options.length;i<l;i++) { if (fromObject.options[i].selected) addOption(toObject,fromObject.options[i].text,fromObject.options[i].value); } for (var i=fromObject.options.length-1;i>-1;i--) { if (fromObject.options[i].selected) deleteOption(fromObject,i); } } function SelectAll(fromObject) { for (var i=0, l=fromObject.options.length;i<l;i++) { fromObject.options[i].text,fromObject.options[i].selected = true; } } </script>
HTML (form): <form action="../groups/new_users_script.php?group_id=" method=post name="myform">
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.