[JS] Updaten selectboxes

Pagina: 1
Acties:

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 00:06

MueR

Admin Devschuur® & Discord

is niet lief

Topicstarter
Het idee:
Ik heb 3 selectboxes op een pagina. Deze bevatten namen van crewmembers. De eerste selectbox is de hoofdadmin. Pas wanneer deze geset is, wordt de 2e actief. De 3e idem. Uiteraard moet het niet mogelijk zijn om 1 persoon 3 keer te noemen. Vandaar dat de optie van een in box 1 geselecteerde crewmember, in box 2 en 3 uitgeschakeld is.

Wat heb ik:
Ik ben er in geslaagd om de selectboxes aan en uit te zetten na het selecteren. Ook het disablen van een optie lukt me goed. De functie (zie onder) is niet de mooiste, maar hij werkt. Suggesties tot verbetering zijn uiteraard welkom.

Het probleem:
Wanneer ik een persoon selecteer als 1e admin, en me toch bedenk, selecteer ik een ander als hoofdadmin. De hoofdadmin wordt dan netjes in de overige 2 boxes gedeactiveerd. Echter mijn 1e keus is ook nog steeds gedeactiveerd. Dit wil ik graag oplossen. Kan iemand me daarmee helpen?

De functie
code:
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
29
30
31
32
function updateSelectboxes() 
{
  var gap = document.add.game_admin_1;
  var gas = document.add.game_admin_2;
  var gat = document.add.game_admin_3;
  
  // Hoofdadmin
  if (gap.options[gap.selectedIndex].value > 0) {
    gas.disabled = false;
    
    var sid = gap.selectedIndex;
    
    gas.options[sid].disabled = true;
    gat.options[sid].disabled = true;
  } else {
    gas.disabled = true;
    gas.value = -1;
  }
  // 2e admin
  if (gas.options[gas.selectedIndex].value > 0) {
    gat.disabled = false;
        
    var tid = gas.selectedIndex;
    
    gap.options[tid].disabled = true;
    gat.options[sid].disabled = true;
    gat.options[tid].disabled = true;
  } else {
    gat.disabled = true;
    gat.value = -1;
  }
}

Anyone who gets in between me and my morning coffee should be insecure.


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Dan zet je toch in de andere boxen eerst alles op enabled en daarna deactiveer je de nieuwe hoofdadmin, of begrijp ik je verkeerd?

En om formulier elementen juist te benaderen:
code:
1
2
3
var gap = document.forms["add"].elements["game_admin_1"];
var gas = document.forms["add"].elements["game_admin_2"];
var gat = document.forms["add"].elements["game_admin_3"];

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 00:06

MueR

Admin Devschuur® & Discord

is niet lief

Topicstarter
Doh, dat probeerde ik te doen.. helemaal niet aan een simpele for loop gedacht. Senks

Anyone who gets in between me and my morning coffee should be insecure.


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Graag gedaan :)

En als die for lussen te lang duren omdat de selectboxen te groot zijn kun je ook gewoon in een variabele bijhouden welke op disabled staat en gewoon alleen die eerst weer enablen.

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 00:06

MueR

Admin Devschuur® & Discord

is niet lief

Topicstarter
Met een lijst van 5 tot 10 namen zal dat wel meevallen.

Anyone who gets in between me and my morning coffee should be insecure.