Avatar billede jgp Nybegynder
22. februar 2001 - 13:22 Der er 14 kommentarer og
1 løsning

Kan en <select> opdatere <option>\'s i en anden <select>?

Nr1 skal bruges til at bestemme indholdet i nr2:

<select name=\"nr1\">
<option selected>1</option>
<option>1</option>
</select>

<select name=\"nr2\">
<% If request.form(\"nr1\") = \"1\" then
Response.Write \"<option>en mulighed</option><option>en mulighed</option>\"
Else
Response.Write \"<option>en anden mulighed</option><option>en anden mulighed</option>\"
End If %>
</select>

Dette virker ikke, nogen forslag til hvordan man kan få det til at virke?
Avatar billede kasseper Nybegynder
22. februar 2001 - 13:24 #1
er begge selects på samme side ????
Avatar billede bjarke-b Nybegynder
22. februar 2001 - 13:25 #2
Det kan du godt, men så skal du jo lave det sådan:
1.html
<form method=post action=2.asp>
<select name=\"nr1\">
<option selected>1</option>
<option>1</option>
</select>
<input type=submit>
</form>

og 2.asp
<select name=\"nr2\">
<% If request.form(\"nr1\") = \"1\" then
Response.Write \"<option>en mulighed</option><option>en mulighed</option>\"
Else
Response.Write \"<option>en anden mulighed</option><option>en anden mulighed</option>\"
End If %>
</select>
Avatar billede kasseper Nybegynder
22. februar 2001 - 13:25 #3
nej det er da fordi du ikke har en value på din første select :


<select name=\"nr1\">
<option selected value=\"1\">1</option>
<option value=\"2\">1</option>
</select>

<select name=\"nr2\">
<% If request.form(\"nr1\") = \"1\" then
Response.Write \"<option>en mulighed</option><option>en mulighed</option>\"
Else
Response.Write \"<option>en anden mulighed</option><option>en anden mulighed</option>\"
End If %>
</select>


sådan..!

Avatar billede jgp Nybegynder
22. februar 2001 - 13:34 #4
Ja begge Select\'s er på samme side.

Synes nu ikke det gør nogen forskel ved at komme value\'s på option\'s?

Evt er der noget ligende en onChange fuktion i asp? Så kunne man vel bruge sådan en?
Avatar billede kasseper Nybegynder
22. februar 2001 - 15:08 #5
Jamen når begge select\'s er på samme side kan du jo ikke bruge serverside scripting til at opdatere den ene select med den anden. Ihvertfald ikke uden at siden reloades....
Skal det være uden reload eller ej ?
Avatar billede kasseper Nybegynder
22. februar 2001 - 15:13 #6
Jeg har et script der gør det uden reload, men ikke med ASP kode, det bruger javascript, kan du bruge det tror du.
Du skal bare være opmærksom på at du ikke umiddelbart kan hente data til selectboxene, fra en base....
Avatar billede jgp Nybegynder
22. februar 2001 - 15:51 #7
jeg vil meget gerne se det script. Det gør ikke noget det er JS :-)
Avatar billede sone Nybegynder
22. februar 2001 - 16:01 #8
Check http://www.noerresundbybank.dk/post/
Valg af afdeling, vælger medarbejder - er opbygget i ren JS (se koden).
Avatar billede kasseper Nybegynder
22. februar 2001 - 16:05 #9
Jeg har slettet alt hvad der var af vitale data(ikke noget kode), så det kan godt ske at det er lidt svært at forstå præcis hvad jeg gør.
Men ideen er at den kørte på en side med 2 selectboxe og 5-6 div tags.
i hver option\'s value står der en kommasep. streng, som angiver værdierne der skal i div tagsne, og evt. hvilket array der skal fyldes i den anden selectbox.
OK først lidt kode
************************************************************
<script>
function fill(g, h)
{
    var alen;
    alen = h.length;
    var d;
    d = 0;
    var navn;
    var hvor;
    var resten;
   
    while ( d < alen )
    {   
       
        re = /,/i;
          hvor = h[d].search(re);
          navn = h[d].substring(0,hvor);
        resten = h[d].substring(hvor,h[d].length);
        g.afdeling.options[g.afdeling.options.length]=new Option(navn,resten);
        d++;
    }
document.Team.afdeling.selectedIndex=-1;
}



function changeSelect(a,b)
{
    forkort.innerHTML = \"\";
    stilling.innerHTML = \"\";
    email.innerHTML = \"\";
    lokalnr.innerHTML = \"\";
    telefonnr.innerHTML = \"\";
   
    var j;
    var len;
    len = document.Team.afdeling.length;
    j = 0;
        while (j < len)
        {        
               
                a.afdeling.options[j].value = \"\";
                a.afdeling.options[j].text = \"\";
                a.afdeling.options.length--;
                len=a.afdeling.options.length;
                   
        }
    switch(b)
    {
    case 0 :
        fill(a,All);
        break;
    case 1 :
        fill(a,Ekonomi);
        break;
    case 2 :
        fill(a,Forvaltning);
        break;
    case 3 :
        fill(a,Bygg);
        break;
    case 4 :
        fill(a,ElData);
        break;
    case 5 :
        fill(a,VVS);
        break;
    case 6 :
        fill(a,Vent);
        break;   
    }
}

function fillout(a)
{
    forkort.innerHTML = \"\";
    stilling.innerHTML = \"\";
    email.innerHTML = \"\";
    lokalnr.innerHTML = \"\";
    telefonnr.innerHTML = \"\";
   
    var re;
    var resten;
    var hvor;
    var forkort2;
    var stilling2;
    var mail2;
    var loknr2;
    var telefon2;
   
    re = /,/i;
      hvor = (a.substring(1,a.length)).search(re);
    forkort2 = a.substring(1,hvor + 1);
    resten = a.substring(hvor + 1,a.length);
   
    hvor = (resten.substring(1,resten.length)).search(re);
    stilling2 = resten.substring(1,hvor + 1);
    resten = resten.substring(hvor + 1,resten.length);
   
   
    hvor = (resten.substring(1,resten.length)).search(re);
    mail2 = resten.substring(1,hvor + 1);
    resten = resten.substring(hvor + 1,resten.length);
   
   
    hvor = (resten.substring(1,resten.length)).search(re);
    loknr2 = resten.substring(1,hvor + 1);
    resten = resten.substring(hvor + 1,resten.length);
   
    hvor = (resten.substring(1,resten.length)).search(re);
    telefon2 = resten.substring(1,hvor + 1);
    resten = resten.substring(hvor + 2,resten.length);
   
    forkort.innerHTML = \"<h3>\" + forkort2;
    stilling.innerHTML = \"<h3>\" + stilling2;
    email.innerHTML = \"<h3>\" + mail2;
    lokalnr.innerHTML = \"<h3>\" + loknr2;
    telefonnr.innerHTML = \"<h3>\" + telefon2;
    document.Team.kategori[resten].selected = true;
    document.Team.Mail_to.value = mail2;
       
}
</script>

<select name=\"kategori\" onChange=\"changeSelect(this.form,selectedIndex);fillout(this.value);\">
</select>
<select name=\"afdeling\" onChange=\"fillout(this.value);\">
</select>
******************************************************
OK jeg forklare ganske kort.
changeselect kaldes med det index som er blevet valgt og value fra den første selectbox.
i changeselect fjernes først alt i selectbox 2, og herefter kaldes fill med et af 6 arrays(case sætningen)
I Fill fyldes der i selectbox2\'s text prop. og i selectbox2\'s value prop. Disse oplysninger parses ud af hver streng der er i arrayet.
reelt er det indtil første komma der skal i text prop. og resten der skal i value.
Når så Fillout kaldes parses værdierne fra value feltet ud til div tagsne, så den funktion er nok irelevant for dig..
Nu må du se om du kan bruge det til noget, om ikke andet kan du da se hvordan man gør.;)
Avatar billede kasseper Nybegynder
22. februar 2001 - 16:07 #10
sone >> det er næsten på samme måde min er lavet, dog, med arrays....
Jeg syntes at det blev lidt mere dynamisk, når jeg brugte arrays, da jeg skulle generere dem udfra noget ASP skidt..;)
Avatar billede jgp Nybegynder
23. februar 2001 - 10:04 #11
Måske kan du endda hjælpe mig med hvorfor jeg får følgende fejl når jeg benytter denne kode:

\"mitdiv\" is underfined

<script>
  skal = \"<option>ind i</option>\";
  mitdiv.innerHTML = skal;
</script>
<div id=\"mitdiv\"></div>

mitdiv er i en form.
Jeg bruger IE 5.5 og innerHTML, virker for mig på andre sider...
Avatar billede kasseper Nybegynder
23. februar 2001 - 13:46 #12
Det er fordi at mitdiv bliver erklæret efter du prøver at lægge noget idet.
Enten skal du smide scriptet ned under div tagget, eller også skal du lave dit script som funktion som så først bliver kaldt efter du har erklæret div tagget-..:)
Avatar billede kasseper Nybegynder
23. februar 2001 - 13:47 #13
Sådan :

<div id=\"mitdiv\"></div>
<script>
  skal = \"<option>ind i</option>\";
  mitdiv.innerHTML = skal;
</script>


eller

<script>
function skalimitdiv()
{
  skal = \"<option>ind i</option>\";
  mitdiv.innerHTML = skal;
}
</script>
<div id=\"mitdiv\"></div>
<script>
skalimitdiv();
</script>

Avatar billede jgp Nybegynder
08. marts 2001 - 10:48 #14
sone: Dit link til http://www.noerresundbybank.dk/post/ blev nøglen til løningen af problemet, tak for det :-)
kasseper: Mange tak for hjælpen, selvom det ikke blev dig der løb med \"sejeren\".
Avatar billede jgp Nybegynder
08. marts 2001 - 13:34 #15
Sone: jeg har problemer med at få difineret værdierne i de nye options, hvad gør jeg galt?

Håber du stadig er med på en lytter...
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
Kurser inden for grundlæggende programmering

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