Avatar billede raz0 Nybegynder
03. juli 2003 - 18:18 Der er 15 kommentarer og
1 løsning

'selected' i en "genereret" dropdown?

Det jeg skal bruge er en dropdown der har en rækker hovedpunkter, når man så vælger et hovedpunkt er der en anden dropdown der opdaterer sig med underpunkter til hovedpunktet. Jeg har allerede fundet sådan et script som i kan se forneden, men nu er problemet. Jeg skal have gemt data i en database. Det går også fint nok med nedenstående script, bortset fra at inputet i den anden dropdown IKKE får value som et tal (eg. 2) men som f.eks. "Corolla" i POST. Det virkelige problem kommer når jeg skal hive dataene frem igen. Jeg kan jo fint have <option selected='selected'> i den første dropdown, men hvad gør jeg med den anden?

Hvad gør jeg? Nogen idéer til hvordan jeg man modificere scriptet så jeg kan, eller kan i vise mig et andet script der kan eller evt. lave et til mig?

På forhånd tak.
Morten



-----------------------------------------------------

<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT LANGUAGE=javascript>
<!--

// Populate an array with all of the models from the different
// manufactures in the order that the manufacturers appear in the
// drop-down list. In this example, I'll use Ford and Toyota
// of course, you'll want to generate these via server-side vbscript

models = new Array(3)
models [0] = new Array(1)
models [1]= new Array(3)
models [2] = new Array(4)

//Empty (0)
models [0][0] = " "

//Ford  (3)
models [1][0] = "Tempo"
models [1][1] = "Tauras"
models [1][2] = "Windstar"

//Toyota  (2)
models [2][0] = "Tercel"
models [2][1] = "Corolla"
models [2][2] = "Camry"
models [2][3] = "Avalon"


//============================================

//Next, we create a function to fill the second drop down from
//the array based on the item selected in the first drop down.

function FillList()
{
var num=document.formname.manufacturer.selectedIndex
var boxlength = 0

document.formname.models.selectedIndex = 0
for ( ctr=0;ctr<models[num].length;ctr++)
{
boxlength++;
document.formname.models.options[ctr] = new Option(models[num] [ctr], models[num][ctr]);
}

document.formname.models.length = boxlength;
document.formname.models.focus() ;

}

//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM action="?" method="post" id="form1" name="formname">
<SELECT id="select1" name="manufacturer" onChange="java script:FillList()">
<OPTION value="-1"></OPTION>
<OPTION value="1">Ford</OPTION>
<OPTION value="2">Toyota</OPTION>
</SELECT>

<SELECT name="models">
<OPTION></OPTION>
</SELECT>

</FORM>
</BODY>
</HTML>
Avatar billede roenving Novice
03. juli 2003 - 19:13 #1
Prøv med:

<BODY onload="FillList()">
Avatar billede raz0 Nybegynder
03. juli 2003 - 19:16 #2
Det jeg mener er, at jeg gerne vil kunne vælge hvad dropdown'sene skal starte på.
F.eks. hvis jeg har en hoved-dropdown med klasser (1.a, 2.a, 3.a osv.) og en under-dropdown med elever (Mikkel, Pia, Jens, Susan osv.), hvordan kan jeg så vælge 2.a og Jens til at starte med?
Avatar billede roenving Novice
03. juli 2003 - 19:20 #3
-- nåeh nej du har jo ikke selected med over, det er nok der problemet er ...

Så skal vi jo have den med over og også reagere på den, så lige efter dine array-definitioner indsætter du en:

var select2Index = -1 //<-- -1 ved start, ellers det index, som er valgt

-- og så i onload:
<BODY onload="FillList();document.formname.models.options[select2Index.selected=true;">

-- og dit script kan lige modificeres i linjen med create options:

document.formname.models.options[ctr] = new Option(models[num][ctr],ctr);
Avatar billede roenving Novice
03. juli 2003 - 19:22 #4
Hov nogle tavetosser, og jeg gjorde ikke mine tanker færdige:


<BODY onload="FillList();if(select2Index!=-1)document.formname.models.options[select2Index].selected=true;">

-- og det er selvfølgelig aldeles utestet ,-)
Avatar billede raz0 Nybegynder
03. juli 2003 - 19:35 #5
Hehe, jeg prøver lige.
Avatar billede raz0 Nybegynder
03. juli 2003 - 19:49 #6
Jeg kan ikke rigtig få det til at virke. Det er sikkert bare et eller andet dumt jeg har gjort forkert, men kan ikke lige se hvad det er.
Her er mit script som det ser ud nu ...

http://raz0.zalon.dk/dropdown.html

BTW, kan man ikke have javascript (altså <script> tags) inde i <body> så man slipper for at bruge onLoad? Bare en tanke :)
Avatar billede roenving Novice
03. juli 2003 - 19:57 #7
-- og jeg er et kvajbel-øre, havde lige haft fat i noget med radios, linjen skal hedde:

<BODY onload="FillList();if(select2Index!=-1)document.formname.models.selectedIndex=select2Index;">
Avatar billede raz0 Nybegynder
03. juli 2003 - 20:58 #8
Endeligt fik jeg det til at virke! Nu har jeg også brugt _hele_ dagen på det, og har reddet mig en ordenlig hovedpine oveni hehe. Mange tusind tak - her har du dine point :P
Avatar billede raz0 Nybegynder
03. juli 2003 - 21:01 #9
... og hvis du så lige lavede et svar ;)
Avatar billede roenving Novice
03. juli 2003 - 21:06 #10
Velbekomme '-)
Avatar billede roenving Novice
03. juli 2003 - 21:06 #11
;O)
Avatar billede roenving Novice
03. juli 2003 - 22:30 #12
-- og tak for points ;~}
Avatar billede raz0 Nybegynder
03. juli 2003 - 22:43 #13
var så lidt ;P
Avatar billede roenving Novice
03. juli 2003 - 22:52 #14
-- nåeh, jaeh, skulle lige kigge lidt på spm, dengang jeg skulle svare, fordi jeg blev i tvivl om det var alt for meget ...

-- men blev enig med mig selv om, at det ikke var ude af proportion, så jeg ikke skulle brokke mig på din point-kontos vegne ...

såeh, 'Så lidt', hrm, tja, tja, bum, bum ...

*gg*
Avatar billede roenving Novice
03. juli 2003 - 23:05 #15
-- forøvrigt har jeg glemt at svare på et af dine spm, det der med at lave script-tags andre steder:

jo, scripttags er lovlige _næsten_ overalt i koden (ikke udenfor html-tags), men ...

onload udføres _efter_ at dokumentet betragter sig som loadet, dvs. at _samtlige_ objekter på dokumentet er færdig-initialiseret, derfor er det ofte en fordel at udnytte dette til at få ting til at fungere -- vi _ved_ de er der ...

Der er nogle undtagelser fra denne regel, typisk med elementer, som har en selvstændig source (IMG Iframes og sådan noget) -- de er der men er ikke nødvendigvis fungerende ...

Men i dit eksempel burde du bare kunne placere scriptet efter /body-tagget, så skulle der ikke være problemer med det !-)
Avatar billede raz0 Nybegynder
16. juli 2003 - 10:17 #16
Hehe. Tak for den ekstra oplysning. Troede at ting der blev loaded 'Onload' var lige med det samme før. Rart at vide at det er når siden er 100% loaded. :-)
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