Vraag & Antwoord

Webprogrammeren & scripting

[php] & [javascript] form met multiple selection

3 antwoorden
  • 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.
  • 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]
  • als ik die 2x second= vervang door jouw stukje code, krijg ik nog steeds een foutmelding. sorry, ben niet zo'n ster in javascript...

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.