Avatar billede whatever Nybegynder
25. oktober 2001 - 18:36 Der er 22 kommentarer og
1 løsning

radiobutton skifter indhold i dropdown

Hej

Jeg har brug for et script, hvor et klik på en radiobutton skifter indholdet i en dropdownbox.

Indholdet i dropdownboxene er dynamisk, og antallet af options varierer fra dropdownbox til dropdownbox.

Er der noget som kan hjælpe?
Avatar billede nute Nybegynder
25. oktober 2001 - 18:39 #1
hvor får du innholdet til dine dropdown menyer fra ?

/nute
Avatar billede whatever Nybegynder
25. oktober 2001 - 18:44 #2
det er ikke menuer, men en ganske almindelig dropdownbox.

Dataen kommer fra en MySQL database, så javascriptet skal integreres med php.
Avatar billede olebole Juniormester
25. oktober 2001 - 18:49 #3
<ole>
I taler om det samme  ;o)
Du kan ikke umiddelbart integrere JavaScript med PHP. Det ene afvikles på klienten - det andet på serveren.
Du bliver nødt til at have dine data liggende på klienten, hvis du vil behandle dem med JavaScript.
/mvh
</bole>
Avatar billede nute Nybegynder
25. oktober 2001 - 18:49 #4
så med andre ord, så vil du ved klikk på en radiobutton hente data fra en database ?
Avatar billede whatever Nybegynder
25. oktober 2001 - 19:04 #5
olebole > jeg ved godt, at det ikke direkte kan integreres, og at javascript afvikles på klientet.

Indholdet fra databasen skal hentes ud, når siden loades. Måske læses ud en javascript array eller lignende. Når man klikker på en radiobutton opdateres dropdownboxen med data fra arrayen.

Mit problem er, at jeg ikke har så meget styr på javascript.
Avatar billede olebole Juniormester
25. oktober 2001 - 19:16 #6
Okay ....og hvordan er så mønstret for opdateringen af dine dropdowns. Hvis jeg giver et eksempel, er det næste jo, du efterspørger en anden måde at gøre det på  ;o)
/mvh
Avatar billede whatever Nybegynder
25. oktober 2001 - 19:26 #7
Ok. Jeg skal have 30 radiobuttons (måske bare almindelige links, så hvis det laves med onclick), disse er faste. En for hverbogstav i alfabetet + en for \"0-9\".

Når siden loades skal dropdownboxen være tom.

Når der klikkes på en radiobutton opdateres indholdet af dropdownboxen. Hvis man så klikker på en anden radiobutton, erstattes det nuværende indhold af dropdownboxen med det nye indhold.

Der skal kun være en dropdownbox.

Forstår hvad jeg mener?
Avatar billede whatever Nybegynder
25. oktober 2001 - 19:32 #8
Det kan selvfølgelig laves med 30 layers og dropdownboxe som skjules/vises. Det kan jeg sagtens selv lave, men mon ikke der findes en smartere løsning.
Avatar billede jakoba Nybegynder
25. oktober 2001 - 19:41 #9
Her er er rimelig simpel en. de enkelte arrays foroven slulle være rimeligt nemme at generere udaf databasen med php.
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp107085.html

mvh JakobA
Avatar billede olebole Juniormester
25. oktober 2001 - 19:42 #10
prøv noget:

<script language=\"JavaScript\">
var dropItems_1 = new Array(\"valueA:textA\", \"valueB:textB\", \"valueC:textC\", \"valueD:textD\");
var sel = document.f.s;
function fillSel(which) {
  sel.length = 0;
  for (i=0; i<which.length; i++) {
      sel[sel.length] = new Option();
      sel.value = which[i].split(\":\")[0];
      sel.text = which[i].split(\":\")[1];
  }
}
</script>

<form name=\"f\">
  <select name=\"s\">
  </select>
</form>

<a href=\"#\" onclick=\"fillSel(dropItems_1 )\">test</a>

/mvh
Avatar billede olebole Juniormester
25. oktober 2001 - 19:44 #11
Ups....disse to linier bør skrives om:

      sel.value = which[i].split(\":\")[0];
      sel.text = which[i].split(\":\")[1];
til:
      sel[sel.length].value = which[i].split(\":\")[0];
      sel[sel.length].text = which[i].split(\":\")[1];
Avatar billede olebole Juniormester
25. oktober 2001 - 19:57 #12
Jakob >> Du skriver i en af dine options: \"- sange fra R&B collection\". Er det \"- sange fra Røv&Balle samlingen\" ...?  =oD

PS: \'Røvballe-musik\' er musikerjagon ...typisk, for \'suppe-steg-og-is\' musik - alternativt, for et lidt \'plat\' repertoire. Det er ikke noget personligt - jeg fik blot tanken, da jeg så, hvad der gemte sig af sange  ;o)
/mvh
Avatar billede whatever Nybegynder
25. oktober 2001 - 19:58 #13
jakoba > inden jeg stillede spørgsmålet, prøve jeg det script. Men så vidt jeg kan se, skal alle arrays indeholde et bestemt antal \"rækker\". Det skal være sådan, at der ikke behøves, at være lige mange \"rækker\" i hver array.

olebole > dit script virker tilsyneladende ikke.
Prøv www.efusion.it/test2.htm
Avatar billede olebole Juniormester
25. oktober 2001 - 20:02 #14
Nej, man skal ikke skrive JavaScript og koncentrere sig om noget andet på samme tid  :oP
Scriptet skal se sådan ud:

<script language=\"JavaScript\">
var dropItems_1 = new Array(\"valueA:textA\", \"valueB:textB\", \"valueC:textC\", \"valueD:textD\");

function fillSel(which) {
  sel = document.f.s;
  sel.length = 0;
  for (i=0; i<which.length; i++) {
      sel[i] = new Option();
      sel[i].value = which[i].split(\":\")[0];
      sel[i].text = which[i].split(\":\")[1];
  }
}
</script>

...sorry  ;o)
Avatar billede whatever Nybegynder
25. oktober 2001 - 20:05 #15
Fedt det virker. Lige hvad jeg skulle bruge
Avatar billede olebole Juniormester
25. oktober 2001 - 20:06 #16
...og så ser det pænest ud, hvis select\'en har en vis bredde fra starten, så den ikke står og \'animerer\' - f.eks:

<select name=\"s\" style=\"width:160px\" width=\"160px\">
</select>

width=\"160px\" er medtaget af hensyn til NS4.X/Win. På Mac kan man desværre ikke styre bredden i NS4
/mvh
Avatar billede jakoba Nybegynder
25. oktober 2001 - 20:08 #17
whatever >> der behøves ikke være lige mange. skriptet virker hvadenten der er flere eller færre. det er blot tilfældigt der er lige mange her.

mvh JakobA
Avatar billede whatever Nybegynder
25. oktober 2001 - 20:09 #18
Det skal alligevel ikke virke i NS. Kun i IE5.5 og fremefter. Det er til administreringen af et site. Som bruger den indbygge editor i IE.
Avatar billede whatever Nybegynder
25. oktober 2001 - 20:12 #19
jokoba > Ups. Det havde jeg ikke lige opdaget. Opretter lige et spørgsmål med point.
Avatar billede whatever Nybegynder
25. oktober 2001 - 20:16 #20
Avatar billede olebole Juniormester
25. oktober 2001 - 20:21 #21
Hvis du har mange og lange arrays, kan du gøre følgende for at spare på den første download-tid:

<script language=\"JavaScript\">
function fillSel(which) {
  sel = document.f.s;
  sel.length = 0;
  for (i=0; i<which.length; i++) {
      sel[i] = new Option();
      sel[i].value = which[i].split(\":\")[0];
      sel[i].text = which[i].split(\":\")[1];
  }
}
</script>

<script language=\"JavaScript\" id=\"ib\"></script>

<form name=\"f\">
  <select name=\"s\">
  </select>
</form>

<a href=\"#\" onclick=\"ib.src=\'items_1.js\'\">test 1</a>
<a href=\"#\" onclick=\"ib.src=\'items_2.js\'\">test 2</a>

...og så fylde dine arrays ind i dine .js-filer, sammen med det tilhørende funktionskald - her for \'items_1.js\':

var dropItems = new Array(\"valueA:textA\", \"valueB:textB\", \"valueC:textC\", \"valueD:textD\");
filSel(dropItems);

/mvh
Avatar billede jakoba Nybegynder
25. oktober 2001 - 20:28 #22
Sånogen misforståelser skal vi ikke have flere af, har opdateret og lagt nogen flere sange i RøvBalle collection. (olebole >> Jeg aner ikke hvad det er, musik lar jeg de musiske om).

Grunden til mange tomme options i html-en er at NS4 ikke kan hitte ud af at gøre dropdownlisten længere end den ef født til i html.

mvh JakobA
Avatar billede olebole Juniormester
25. oktober 2001 - 20:34 #23
Hehe ...jeg kritiserede nu ikke musikken - jeg holder meget af en masse \'RøvBalle\' musik, men R&B havde det nu ikke meget med at gøre  ;o)

Jeg kan huske, jeg fandt på en løsning på problemet med længden af select\'en på Framfab .....men jeg kan ikke huske, hvaaaaaaaaaad  :(
Prøver at lægge cellen i blød .....hmmmm, mon singlemalt vil være en passende blødgører - sikkert not!  :o))
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