Avatar billede larsliin Nybegynder
10. april 2003 - 15:31 Der er 1 løsning

Fleksibel <select> box

Hej Eksperter
Jeg har tre <select> box efter hinanden. Indholdet af de efterfølgende boxe skal skifte i forhold til valgene som brugeren foretager. Dette er ikke noget problem, men er det muligt at springe en <select>-box over, hvis det er nødvendigt og gå direkte til sidste <select>-box?
Eksempel:
I første box vælger jeg 'A', og bliver bedt om at foretage endnu et valg i anden box, og bliver derefter sendt til tredie og sidste box. MEN vælger jeg 'B' i første box ignoreres den anden box og man bliver 'sendt' direkte til tredie <select>-box.
Er det på nogen måde muligt? Se evt. min kode herunder:

<HEAD>
<SCRIPT LANGUAGE="JavaScript">

var arrItems1 = new Array();
var arrItemsGrp1 = new Array();

arrItems1[1] = "Område 1";
arrItemsGrp1[1] = 1;
arrItems1[2] = "Område 2";
arrItemsGrp1[2] = 1;

var arrItems2 = new Array();
var arrItemsGrp2 = new Array();

arrItems2[204] = "Slut 1";
arrItemsGrp2[204] = 1
arrItems2[205] = "Slut 2";
arrItemsGrp2[205] = 1
arrItems2[206] = "Slut 3";
arrItemsGrp2[206] = 1
arrItems2[206] = "Slut 4";
arrItemsGrp2[206] = 1

arrItems2[207] = "Slut 5";
arrItemsGrp2[207] = 2
arrItems2[208] = "Slut 6";
arrItemsGrp2[208] = 2
arrItems2[209] = "Slut 7";
arrItemsGrp2[209] = 2
arrItems2[210] = "Slut 8";
arrItemsGrp2[210] = 2

arrItems2[211] = "Slut 9";
arrItemsGrp2[211] = 3
arrItems2[212] = "Slut 10";
arrItemsGrp2[212] = 3
arrItems2[213] = "Slut 11";
arrItemsGrp2[213] = 3
arrItems2[214] = "Slut 12";
arrItemsGrp2[214] = 3

function selectChange(control, controlToPopulate, ItemArray, GroupArray)
{
  var myEle ;
  var x ;
  for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options[q]=null;
  if (control.name == "firstChoice") {
    for (var q=myChoices.thirdChoice.options.length;q>=0;q--) myChoices.thirdChoice.options[q] = null;
}
  myEle = document.createElement("option") ;
  myEle.value = 0 ;
  myEle.text = "- Vælg -" ;
  controlToPopulate.add(myEle) ;
  for ( x = 0 ; x < ItemArray.length  ; x++ )
    {
      if ( GroupArray[x] == control.value )
        {
          myEle = document.createElement("option") ;
          myEle.value = x ;
          myEle.text = ItemArray[x] ;
          controlToPopulate.add(myEle) ;
        }
    }
}
</script>
</HEAD>
<BODY>
<form name=myChoices>
<SELECT id=firstChoice name=firstChoice onchange="selectChange(this, myChoices.secondChoice, arrItems1, arrItemsGrp1);" style="width:250px;">
    <option value="0" selected>- V&aelig;lg omr&aring;de -</option>
    <option value="1">Valg A</option>
    <option value="2">Valg B</option>
  </SELECT>
<SELECT id=secondChoice name=secondChoice onchange="selectChange(this, myChoices.thirdChoice, arrItems2, arrItemsGrp2);" style="width:250px;">
      <option selected>- V&aelig;lg -</option>
    </SELECT>
<SELECT id=thirdChoice name=thirdChoice style="width:90px;">
      <option selected>- V&aelig;lg -</option>
    </SELECT>
</form>
Avatar billede neo.net Nybegynder
14. april 2003 - 14:51 #1
Jeg er ikke helt sikker på hvad du mener med "'sendt' direkte til tredie". Men mener du at den tredie select box, skal have focus, så kan du eventuelt gøre det ved at sætte en attribut på dine option tags.

<option value="1" nextControl="thirdChoice">Valg B</option>

I denne kan du så skrive navnet på den select box der skal have focus, hvis denne option vælges.
Og så skal du også lige tilføje følgende sidst i din selectChange funktion:

if(control.children[control.selectedIndex].getAttribute("nextControl") != null){
  eval("myChoices."+control.children[control.selectedIndex].getAttribute("nextControl")+".focus()");
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester