Avatar billede carpediem Nybegynder
20. juni 2001 - 16:28 Der er 8 kommentarer og
2 løsninger

automatisk opdatering af dropdownbox

Jeg skal bruge en metode hvorpå jeg automatisk kan opdatere en dropdownbox, udfra hvad der vælges i en anden dropdownbox. Begge dropdownboxe er på samme side og det skal gøres clientside, da det er vigtigt at der ikke er opdateringsforsinkelser. Det skal også kunne virke den anden vej rundt. Dvs. hvis man vælger noget i den anden dropdownbox, så opdateres den første dropdownbox.
Er der nogen der har en løsning?
Er der overhovedet nogen der forstår hvad jeg mener?
Avatar billede jakoba Nybegynder
20. juni 2001 - 20:11 #1
Ja, det er ikke det store problem.

Nu skriver du ikke præcisk hilke opdateringer der skal følge af hvilke valg i hvilken dropdownboks. så det bedste jeg kan give dig i denne runde er et link til en side hvor der er små routiner til at indsætte, fjerne og flytte options.

spørg evt mere hvis der er brug for det.

mvh JakobA

http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp66097.html
Avatar billede carpediem Nybegynder
20. juni 2001 - 23:04 #2
Det jeg mener er at jeg at to dropdownbokse:
Den første:
<SELECT NAME=\"Kundenr1\">
<OPTION VALUE=\"123\">Kunde 1</OPTION>
<OPTION VALUE=\"321\">Kunde 2</OPTION>
</SELECT>
Den anden:
<SELECT NAME=\"Kundenr2\">
<OPTION VALUE=\"123\">123</OPTION>
<OPTION VALUE=\"321\">321</OPTION>
</SELECT>
Hvis man i den første vælger kunde 2, så opdaterer den anden  automatisk så 321 er selected eller hvis man i den anden vælger 123, så opdaterer den første automatisk så kunde 1 er selected.
Avatar billede olebole Juniormester
20. juni 2001 - 23:21 #3
<ole>

<script language=\"JavaScript\">
function set(f,v) {
    for (i=0; i<f.Kundenr2.length; i++) {
        if (f.Kundenr2.options[i].value==v) {
            f.Kundenr2.options[i].selected=true;
        }
    }
}
</script>

...og:

<form>
<select name=\"Kundenr1\" onchange=\"set(this.form,this.options[this.selectedIndex].value);\">
<option value=\"123\">Kunde 1</option>
<option value=\"321\">Kunde 2</option>
</select>
Den anden:
<select name=\"Kundenr2\">
<option value=\"123\">123</option>
<option value=\"321\">321</option>
</select>
</form>

/mvh
</bole>
Avatar billede olebole Juniormester
20. juni 2001 - 23:33 #4
Nåhhh...jeg læste ikke slutnigen på spørgsmålet. Sådan i stedet:

<script language=\"JavaScript\">
function set(f,v,t) {
    t = f.elements[t];
    for (i=0; i<t.length; i++) {
        if (t.options[i].value==v) {
            t.options[i].selected=true;
        }
    }
}
</script>

...og:

<form>
<select name=\"Kundenr1\" onchange=\"set(this.form,this.options[this.selectedIndex].value,\'Kundenr2\');\">
<option value=\"123\">Kunde 1</option>
<option value=\"321\">Kunde 2</option>
</select>
Den anden:
<select name=\"Kundenr2\" onchange=\"set(this.form,this.options[this.selectedIndex].value,\'Kundenr1\');\">
<option value=\"123\">123</option>
<option value=\"321\">321</option>
</select>
</form>

/mvh
Avatar billede jakoba Nybegynder
20. juni 2001 - 23:34 #5
Hvis der altid er lige mange kunder og i samme rækkefølge:

<SELECT NAME=\"Kundenr1\" onchange=\"document.formnavn.Kundenr2.selectedIndex=this.selectedIndex\">
<OPTION VALUE=\"123\">Kunde 1</OPTION>
<OPTION VALUE=\"321\">Kunde 2</OPTION>
</SELECT>
Den anden:
<SELECT NAME=\"Kundenr2\" onchange=\"document.formnavn.Kundenr1.selectedIndex=this.selectedIndex\">
<OPTION VALUE=\"123\">123</OPTION>
<OPTION VALUE=\"321\">321</OPTION>
</SELECT>

\"formnavn\" er det navn du giver formen med en name=\"formnavn\" prameter i din <form kommando.

Antallet er vel nødt til at være det samme, ellers må der være noget fejlhåndtering til situationen hvor den valgte kunde ikke svarer til noget i den anden select. men rækkefølgen kan være forskellig. det vil kræve en lille javascript funktion:

i head:
<script language=\'javascript\'> <!--

function matchSelect( fraSel, tilSelNavn ) {
  var i;
  var tilSel = document.formnavn.elements[tilSelNavn];
  var kundenr = fraSel.options[fraSel.selectedIndex].value;
  for ( i=0; tilSel.options.length>i; i++ )
    if ( tilSel.options[i].value == kundenr ) break;
  if ( i < tilSel.options.length ) {
    tilSel.selectedIndex=i;  // vi fandt kunden
  } else {
    alert( \"Den er helt gal. kunde \" +kundenr
          +\" findes ikke i \"+tilSelNavn );
  }
}; //end matchSelect( select object, string )

// --> </script>

og de to selects skrives som:

<SELECT NAME=\"Kundenr1\" onchange=\"matchSelect( this, \'Kundenr2\' )\">
<OPTION VALUE=\"123\">Kunde 1</OPTION>
<OPTION VALUE=\"321\">Kunde 2</OPTION>
</SELECT>
Den anden:
<SELECT NAME=\"Kundenr2\" onchange=\"matchSelect( this, \'Kundenr1\' )\">
<OPTION VALUE=\"123\">123</OPTION>
<OPTION VALUE=\"321\">321</OPTION>
</SELECT>

mvh JakobA
Avatar billede olebole Juniormester
21. juni 2001 - 02:51 #6
Hvis der altid er lige mange kunder - og det er der jo...man kan så vælge efter kundenummer eller -navn. Mon ikke?
Og hvad angår rækkefølgen: Læs koden igen, så vil du se, den er underordnet  :o)
Prøv script\'et, jakoba...og du vil se, det funker fint  :o)
/mvh
Avatar billede jakoba Nybegynder
21. juni 2001 - 06:29 #7
olebole > ingen tvivl om det :) 
Det er den sedvanlige med at vi sidder og skriver mens hinanden svarer. Du skriver bare hurtigere.

mvh JakobA
Avatar billede carpediem Nybegynder
21. juni 2001 - 10:17 #8
Tak skal I have. I deler...Er det ok?
Ja, det skal det jo være.
Avatar billede olebole Juniormester
21. juni 2001 - 11:03 #9
carpediem >> Selvfølgelig er det fint...tak  :o)

jakoba >> Ja, hvor er det nu, vi kender det fra?  *LooOooL*
Så var jeg lige inde på JavaScript-kategori-forsiden idag......til lykke med pladsen.
Nu må du tage en tørn på pladsen, så du også kan få et godt job - så du kan få travlt og en anden kan tage over  :oD
/mvh
Avatar billede jakoba Nybegynder
21. juni 2001 - 20:17 #10
ole > tak for de pæne ord. Jeg skal prøve at holde standarden sålænge det varer :)
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