anoniem Geplaatst: 16 oktober 2002 Delen Geplaatst: 16 oktober 2002 Ik heb een form met een multiple selection form. De multiple selection is als volgt gedefinieert: [code:1:81a13dd149] <input type="hidden" id="func_status" onClick="javascript:if(document.frm_criteria.functies.options.length == 0) this.checked = false; else {this.checked = true;}"> </td> <td > <select name="functie_besch" size="4" style="width:200" multiple > <? $sql="SELECT functienr, functienaam FROM functie order by functienaam"; $resultaat = mysql_query($sql) or die (mysql_error()); While ($row = mysql_fetch_array($resultaat, MYSQL_NUM)) { ?> <option value="<? echo $row[0]; ?>"><? echo $row[1]; ?> <? } ?> </select></td> <td> <input name="button" type="button" style="width=30" onClick="f_setlist('functie_besch','functies','func_status')" value="-->"> <br> <input name="button" type="button" style="width=30" onClick="del_list('functies','func_status')" value="<--"> </td> <td> <select name="functies[]" size="4" style="width:200" multiple> </select> [/code:1:81a13dd149] Hierbij wordt zoals je ziet gebruik gemaakt van een javascript, als volgt gedefinieert: [code:1:81a13dd149] <script language="JavaScript"> function f_setlist(firstlist,secondlist,combo) { first = eval("document.frm_criteria." + firstlist); second = eval("document.frm_criteria." + secondlist); com = eval("document.frm_criteria." + combo); for (i=0;i < first.options.length;i++) { if (first.options[i].selected == true) { exit = false; for (j=0; j< second.options.length;j++) { if (first.options[i].text == second.options[j].text) { exit = true; j = second.options.length; } } if (exit == false) { ins = first.options[i].text; val = first.options[i].value; pos = second.options.length; second.options[pos]= new Option(ins,val); com.checked = true; } } } } function del_list(secondlist,combo) { second = eval("document.frm_criteria." + secondlist); com = eval("document.frm_criteria." + combo); for (i=0;i < second.options.length;i++) { if (second.options[i].selected == true) { second.options[i] = null; i--; } } if (second.options.length == 0) {com.checked = false;} } </script> [/code:1:81a13dd149] Als ik nu test, blijkt dat er een fout in het javascript zit en dat ik niet meer de waardes uit de linker list naar de rechter list kan verplaatsen. Ik heb ook al geprobeerd om 'functies' in het javascript te vervangen door 'functies[]', maar dan krijg ik een syntaxfout. Voor de verdere verwerking van het form, is het nodig dat de waardes uit 'functies' doorgegeven worden als array. Mvg, Mark. Quote Link naar reactie
anoniem Geplaatst: 16 oktober 2002 Auteur Delen Geplaatst: 16 oktober 2002 Allereerst is het gebruik van eval() bijna altijd op een andere manier op te lossen, bovendien wordt het om die reden vaak als "ranzig" omschreven ;) Maar dat wilde je niet weten. Je hebt binnen het [i:dae92d6a63]document[/i:dae92d6a63] object een [i:dae92d6a63]forms[/i:dae92d6a63] collection en elke form heeft een [i:dae92d6a63]elements[/i:dae92d6a63] collection welke je ook met named indexes kan aanspreken. Anders gezegd: onderstaande zal wel werken en heeft imho overigens ook de voorkeur. [color=blue:dae92d6a63]second = document.forms['frm_criteria'].elements[secondlist]; [/color:dae92d6a63] Quote Link naar reactie
anoniem Geplaatst: 16 oktober 2002 Auteur Delen Geplaatst: 16 oktober 2002 als ik die 2x second= vervang door jouw stukje code, krijg ik nog steeds een foutmelding. sorry, ben niet zo'n ster in javascript... Quote Link naar reactie
anoniem Geplaatst: 16 oktober 2002 Auteur Delen Geplaatst: 16 oktober 2002 Heb je alle object verwijzingen aangepast naar de eerder genoemde notatie? En ook de aanroep van de functie aangepast? Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen