Ga naar inhoud

[php] & [javascript] form met multiple selection


anoniem

Aanbevolen berichten

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.
Link naar reactie
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]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...