Avatar billede vels Nybegynder
28. februar 2004 - 14:33 Der er 3 kommentarer og
1 løsning

konfigurator med dropdown

Hej

Hvis nu jeg har nogle dropdown med nogle værdier f.eks.

Dropdown nr 1
-------------
Her kan vælges værderine A B C D

Dropdown nr 2
-------------
Hvis A C er valgt så skal X Y vises i denne dropdown
Men hvis B D er valgt så skal I K vises

Alle variable A B C D X Y I K har en værdi, og alt efter hvad der er valgt, skal der vises en samlet sum ud fra de 2 dropdown.


Nogle der har et eksempel på det?
Avatar billede googolplex Novice
28. februar 2004 - 14:35 #1
Den første del kan du finde her:

http://roenving.users.whitehat.dk/ - 'Multiple Selects'
Avatar billede roenving Novice
28. februar 2004 - 14:37 #2
-- er det beskrevne en fuld udgave af dit scenarie eller kan det være anderledes ?-)
Avatar billede vels Nybegynder
28. februar 2004 - 14:46 #3
det kunne godt være anderledes...
Avatar billede roenving Novice
28. februar 2004 - 15:59 #4
Det er rasende kompliceret at blive bare en lille smule generel og også tage hensyn til forskellige muligheder, men her er en, som lever op til dine krav !-)

Bemærk, at den første variabel er sammenkoblingen mellem værdier i den første og den anden select:

<script type="text/javascript">
var dropconfig = [[0,2],[1,3],[0,2],[1,3]];//4 arrays med de options fra sel2, som er gyldige til hver sel1-option
var drop = [[5,10,15,20],[0.2,0.3,0.4,0.5]];//Gyldige værdier i de to selects

function initSels(){
  var sel = document.form1.sel1;
  sel.length=0;
  var newOpt = document.createElement("OPTION")
  sel.appendChild(newOpt);
  newOpt.text = "-- Vælg --";
  for(i=0;drop[0].length>i;i++){
    newOpt = document.createElement("OPTION")
    sel.appendChild(newOpt);
    newOpt.text = drop[0][i];
    newOpt.value = drop[0][i];
  }
  sel = document.form1.sel2;
  sel.length=0;
  newOpt = document.createElement("OPTION")
  sel.appendChild(newOpt);
  newOpt.text = "\74\74 Vælg --";
}

function ch(sel){
  var sel2 = sel.form.sel2;
  if(sel.selectedIndex==0){
    sel.form.resultat.value = "";
    sel2.length=0;
    newOpt = document.createElement("OPTION")
    sel2.appendChild(newOpt);
    newOpt.text = "\74\74 Vælg --";
  }else{
    var val = null;
    if(sel2.length>1&&sel2.selectedIndex>0)
      val = +sel2.value;
    sel2.length=0;
    newOpt = document.createElement("OPTION")
    sel2.appendChild(newOpt);
    newOpt.text = "-- Vælg --";
    sval = sel.selectedIndex - 1;
    for(i=0;dropconfig[sval].length>i;i++){
      newOpt = document.createElement("OPTION")
      sel2.appendChild(newOpt);
      newOpt.text = drop[1][dropconfig[sval][i]];
      newOpt.value = drop[1][dropconfig[sval][i]];
      if(newOpt.value == val){
        newOpt.selected = true;
        sel2.selectedIndex = i + 1;
        sel.form.resultat.value = +sel.value * val;
      }
    }
  }
}
function beregn(sel2){
  if(sel2.selectedIndex==0){
    sel2.form.resultat.value = "";
  }else{
    sel2.form.resultat.value = +sel2.form.sel1.value * (+sel2.value);
  }
}
</script>

<body onload="initSels();">
<form name="form1">
<div style="float:left;">
Vælg tal:<br>
<select name="sel1" onchange="ch(this);">
  <option>-- Vælg --</option>
</select>
</div>
<div style="float:left;">
Vælg tal:<br>
<select name="sel2" onchange="beregn(this);">
  <option>&lt;&lt; Vælg --</option>
</select>
</div>
<div style="float:left;">
Resultat:<br>
<input name="resultat">
</div>
</form>
</body>
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