Avatar billede mbiegel Nybegynder
11. juli 2008 - 21:31 Der er 16 kommentarer og
1 løsning

Dynamic select

Hej eksperter :)

Jeg søger et script der består at 3 select bokse.

Når man vælger et emne i select boks 1, skal der indsættes data i boks 2 og 3.

Eks. man vælger et internetselsskab, derefter kommer downloadshastighederne frem i boks 2 og i boks 3 kommer upload hastighederne i, som dette selsskab tilbyder - dem skal man så vælge, som helt almindelige select bokse

Nogen der har en idè til hvordan det kan lade sig gøre?
Avatar billede roenving Novice
12. juli 2008 - 02:17 #1
Hvor kompliceret er det, for det er ret afgørende ?-)

-- jeg lavede en gang for en del år siden et eksempel på en vilkålig udvidbar  udgave, som kunne rumme mange niveauer, se den på http://roenving.users.whitehat.dk/WD4Selects-beta.html ...

-- oftest vil simplere udgaver dog give tilfredsstillende resultater, se et eksemple på: http://www.eksperten.dk/spm/615326 !-)
Avatar billede mbiegel Nybegynder
12. juli 2008 - 12:59 #2
Det er ikke det jeg mener - det har jeg fundet ud af.

Når du vælger boks 1, skal der komme 2 forskellige data frem i boks 2 og boks 3, på samme tid :)
Avatar billede roenving Novice
12. juli 2008 - 14:43 #3
-- så kan vi nok bare udvide arrays i eksemplet fra 615326 ...

-- men du må lige give nogle eksempler på de data, der skal komme i de to andre bokse, og om de altid skifter, eller om der er ens i f.eks. den ene boks, selv om der skiftes i den første !-)
Avatar billede mbiegel Nybegynder
12. juli 2008 - 15:36 #4
Når du vælger eks. et teleselsskab eks. TDC (i boks 1) skal der komme download data i boks 2 og upload data i boks 3.

I boks 2 er det de downloadshastigheder som TDC tilbyder eks (boks 2):

1024 k/bit
2048 k/bit
4096 k/bit

Og i uploadsboksen skal der eks komme (boks 3):

256 kbit
512 kbit
1024 kbit

Vælger man Telia kommer der eks.

Download (boks 2):

512 k/bit
1024 k/bit

Upload (boks 3:
128 k/bit
256 k/bit
512 k/bit

Er du med nu? :)
Avatar billede roenving Novice
12. juli 2008 - 15:42 #5
Jepz !-)

-- sekund ...
Avatar billede roenving Novice
12. juli 2008 - 16:01 #6
Eksempelvis:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<title>Skift flere selects</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
html,body{height:100%;margin:0px;border:0px;padding:0px;font-family:tahoma,verdana,arial,sans-serif;font-size:small;}
</style>
<script language="javascript" type="text/javascript">
var sp = [];
sp[sp.length] = [ ["1024 kbit/s","2048 kbit/s","4096 kbit/s"], ["256 kbit/s","512 kbit/s","1024 kbit/s"] ];
sp[sp.length] = [ ["512 kbit/s","1024 kbit/s"], ["128 kbit/s","256 kbit/s","512 kbit/s"] ];

function showSpeeds(elm){
  var sels = [elm.form.download, elm.form.upload];
  if(elm.selectedIndex==0){
    sels[0].length = 1;
    sels[1].length = 1;
  }else{
    var arrNum = elm.selectedIndex-1;
    for(i=0;2>i;i++){
      sels[i].length = 1;
      for(j=0,jm=sp[arrNum][i].length;jm>j;j++){
        sels[i].options[sels[i].length] = new Option(sp[arrNum][i][j],j);//det sidste ,j giver en value på optionen
        //denne value kan måske undværes, hvis du bare skal bruge værdien direkte
      }
    }
  }
}
</script>
</head>
<body>
<form id="minForm" name="minForm">
Vælg selskab:<br>
<select name="selskab" id="selskab" onchange="showSpeeds(this);">
    <option value="">-- Vælg her --<br>
    <option value="1">TDC<br>
    <option value="2">Telia<br>
</select>
<br>Vælg downloadhastighed:<br>
<select name="download" id="download">
    <option value="">-- Vælg her --<br>
</select>
<br>Vælg uploadhastighed:<br>
<select name="upload" id="upload">
    <option value="">-- Vælg her --<br>
</select>
<br>
<input type="submit" value="send">
</form>

</body>

</html>
Avatar billede roenving Novice
12. juli 2008 - 16:13 #7
-- og scriptet kan reduceres en anelse:

<script language="javascript" type="text/javascript">
var sp = [];
sp[sp.length] = [ ["1024 kbit/s","2048 kbit/s","4096 kbit/s"], ["256 kbit/s","512 kbit/s","1024 kbit/s"] ];
sp[sp.length] = [ ["512 kbit/s","1024 kbit/s"], ["128 kbit/s","256 kbit/s","512 kbit/s"] ];

function showSpeeds(elm){
  var sels = [elm.form.download, elm.form.upload];
  sels[0].length = 1;
  sels[1].length = 1;
  if(elm.selectedIndex>0){
    var arrNum = elm.selectedIndex-1;
    for(i=0;2>i;i++){
      for(j=0,jm=sp[arrNum][i].length;jm>j;j++){
        sels[i].options[sels[i].length] = new Option(sp[arrNum][i][j],j);//det sidste ,j giver en value på optionen
        //denne value kan måske undværes, hvis du bare skal bruge værdien direkte
      }
    }
  }
}
</script>
Avatar billede roenving Novice
12. juli 2008 - 16:15 #8
-- og et bitte nøk performance-optimering:

...
  sels[0].length = 1;
  sels[1].length = 1;
  var arrNum = elm.selectedIndex-1;
  if(arrNum>=0){
    for(i=0;2>i;i++){

...
Avatar billede mbiegel Nybegynder
13. juli 2008 - 00:38 #9
Tusind tak for det :)

Det var lige det jeg efterspurgte ..

Smid et svar, så skal du få dine point ..
Avatar billede mbiegel Nybegynder
13. juli 2008 - 00:53 #10
Lige et sidste spørgsmål

Hvis jeg sætter selected ud fra en af teleselsskaberne, kan man så gøre sådan at den automatisk indsætter i de 2 andre bokse?
Avatar billede roenving Novice
13. juli 2008 - 13:17 #11
Så indsætter du bare fra start !-)

Velbekomme '-)
Avatar billede mbiegel Nybegynder
13. juli 2008 - 13:49 #12
Ja, hvordan skal jeg få den til det? onload virker ikk ..
Avatar billede roenving Novice
13. juli 2008 - 14:04 #13
Hvis du kan indsætte selected i den ene select, kan du vel også indsætte værdierne i de andre ?-)

-- og du kan godt gøre det onload, men så skal du jo medsende referencen til den første select-boks:

window.onload = function(){
  showSpeeds(document.getElementById("selskab"));
}
Avatar billede mbiegel Nybegynder
13. juli 2008 - 14:27 #14
Problemet er at, man skal kunne gemme oplysningerne via PHP, og så skal den jo selv finde ud af at indsætte det andet data, derfor kan man ikke bare indsætte det standart :/
Avatar billede roenving Novice
13. juli 2008 - 14:42 #15
-- men oplysningerne skal jo med til siden, enten i js-arrayet eller i select-boksene, men du kan vel skrive de js-arrays og så bruge den onload, jeg viste !-)
Avatar billede mbiegel Nybegynder
13. juli 2008 - 15:22 #16
Tak, det virker :)
Avatar billede roenving Novice
13. juli 2008 - 15:35 #17
-- og jeg takker for point ;~}
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