Ik heb hier een div ("talen") met daarin een selectbox waarmee de gebruiker een taal kan selecteren. Wanneer er een taal gekozen is moet eronder automagisch een nieuwe selectbox verschijnen om nóg een taal te kunnen kiezen. Ik heb twee problemen:
De code:
Het javascript:
getMoreOptions.php spuugt een stuk HTML uit wat eronder geplaatst moet worden, ik denk dat jullie dat wel snappen
Wie kan mij verder op weg helpen? Ik wil graag leren dit op een betere manier aan te pakken, maar ik zit nu een beetje vast...
- In Firefox wordt de gekozen optie van de eerste selectbox "geleegd", in IE blijft hij wel staan
- Ik wil dat er alleen een selectbox wordt toegevoegd als de onderste niet leeg is. Ik wil dus nooit meerdere lege boxen onder elkaar hebben.
De code:
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
| <div id="talen"> <select name="talen_1" id="talen_1" class="sle_small" onchange="getMoreOptions('talen','1');"> <option></option> <? $getItems = mssql_query("SELECT * FROM talen") or die (mysql_error()); while ($item = mssql_fetch_array($getItems)){ ?> <option><?= $item['taal']; ?></option> <? } ?> </select> <select name="talenlevel_1" id="talenlevel_1" class="sle_small"> <option></option> <? $getItems = mssql_query("SELECT * FROM taallevels") or die (mysql_error()); while ($item = mssql_fetch_array($getItems)){ ?> <option><?= $item['level']; ?></option> <? } ?> </select><br /><br /> </div> |
Het javascript:
JavaScript:
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
| function createRequestObject() { var ro; var browser = navigator.appName; if(browser == "Microsoft Internet Explorer"){ ro = new ActiveXObject("Microsoft.XMLHTTP"); }else{ ro = new XMLHttpRequest(); } return ro; } var http = createRequestObject(); function getMoreOptions(soort,nr) { http.open('get', 'scripts/getMoreOptions.php?soort='+soort+'&nr='+nr); http.onreadystatechange = createFunc(soort); http.send(null); } function createFunc(v) { return function() { if(http.readyState == 4){ var response = http.responseText; var div = document.getElementById(v); div.innerHTML += http.responseText; } } } |
getMoreOptions.php spuugt een stuk HTML uit wat eronder geplaatst moet worden, ik denk dat jullie dat wel snappen
Wie kan mij verder op weg helpen? Ik wil graag leren dit op een betere manier aan te pakken, maar ik zit nu een beetje vast...