Avatar billede ms_2004 Nybegynder
01. februar 2006 - 10:06 Der er 4 kommentarer og
1 løsning

Valg i dropdownboks skal ændre tekst i tekstboks m.m.

Hej,

Jeg er klar over, at der har været skrevet en del om dette herinde, men jeg har ledt uden held, og er nybegynder inden for java script, så skal have det skåret ud i pap...

Det jeg gerne vil, er at have en drop-down boks hvor der står en række Navne (Aaa, Bbb og Ccc). Når man så vælger eksempelvis Aaa i dropdownboksen kunne jeg godt tænke mig, at der sker følgende:

1) I en tekstboks skal Aaa's adresse vises "Avej 8, 2100 Kbh Ø, E-mail: Aaa@a.dk"

2) Der skal vises i et billede med Aaa's logo.

3) Der ud over skal der være et textarea, hvor man kan skrive en besked. Når man trykker send skal "mailto" være sat til den e-mailadresse der bliver vist i tekstboksen (Aaa@a.dk).

Nogen ideer?

MS_2004
Avatar billede softspot Forsker
01. februar 2006 - 13:23 #1
<html>

<head>
  <script type="text/javascript">
    var data = {
                o1:{navn:'Navn 1',adresse:'Vej 1',billede:'billede1.jpg',email:'mail1@bruger.dk'},
                o2:{navn:'Navn 2',adresse:'Vej 2',billede:'billede2.jpg',email:'mail2@bruger.dk'},
                o3:{navn:'Navn 3',adresse:'Vej 3',billede:'billede3.jpg',email:'mail3@bruger.dk'},
                o4:{navn:'Navn 4',adresse:'Vej 4',billede:'billede4.jpg',email:'mail4@bruger.dk'}
              };
    function visOplysninger(obj) {
      // udfør kun indsættelse af data hvis der er valgt en bruger i listen
      if(obj && obj.value != '') {
        var f = obj.form;
        var brugerdata = data[obj.value];
        f.adresse.value = brugerdata.adresse + ', e-mail: ' + brugerdata.email;
        document.getElementById("profil").src = brugerdata.billede;
        document.getElementById("email").href = 'mailto:' + brugerdata.email;
        document.getElementById("email").innerHTML = 'Send en mail til ' + brugerdata.navn;
      }
    }
  </script>
</head>

<body>
  <form>
    <select onchange="visOplysninger(this)">
      <option value="">Vælg en bruger</option>
      <option value="o1">Navn 1</option>
      <option value="o2">Navn 2</option>
      <option value="o3">Navn 3</option>
      <option value="o4">Navn 4</option>
    </select><br>
    Adresse: <input type="text" name="adresse" size="50"><br>
    Billede:<br>
    <img id="profil" src=""><br>
    Email: <a href="#" id="email">&nbsp;</a><br>
  </form>
</body>

</html>
Avatar billede softspot Forsker
01. februar 2006 - 13:34 #2
Forklaring:

var data = {
  o1:{navn:'Navn 1',adresse:'Vej 1',billede:'billede1.jpg',email:'mail1@bruger.dk'},
  o2:{navn:'Navn 2',adresse:'Vej 2',billede:'billede2.jpg',email:'mail2@bruger.dk'},
  o3:{navn:'Navn 3',adresse:'Vej 3',billede:'billede3.jpg',email:'mail3@bruger.dk'},
  o4:{navn:'Navn 4',adresse:'Vej 4',billede:'billede4.jpg',email:'mail4@bruger.dk'}
};

Denne blok definerer et objekt, hvor du kan referere egenskaberne via navne, på samme måde som når du bruger så mange andre objekter med dot-notation (f.eks. vil data.o1.navn returnere teksten 'Navn 1' osv.). Navngivning af egenskaber i objektet er i princippet frie, sålænge du holder dig indenfor reglerne for navngivning af identifiers i javascript :)


function visOplysninger(obj) {
  // udfør kun indsættelse af data hvis der er valgt en bruger i listen
  if(obj && obj.value != '') {
    var f = obj.form;
    var brugerdata = data[obj.value];
    f.adresse.value = brugerdata.adresse + ', e-mail: ' + brugerdata.email;
    document.getElementById("profil").src = brugerdata.billede;
    document.getElementById("email").href = 'mailto:' + brugerdata.email;
    document.getElementById("email").innerHTML = 'Send en mail til ' + brugerdata.navn;
  }
}

Denne funktion modtager det dropdown-listen (select-element), hvorfra valget bliver foretaget og aflæser på grundlag af valget i dropdown-listen, det objekt i data som er angivet i option-elementets value, hvilket sker i denne linie:

var brugerdata = data[obj.value];

Med den enkelte brugers data i hånden kan vi så bare aflæse værdierne og indsætte dem i de objekter hvor de hører til (hvilket sker i de sidste 4 linie af funktionen).
Avatar billede ms_2004 Nybegynder
10. februar 2006 - 14:19 #3
Jep - det virker - tak. Smid et svar, hvis du vil have point :-)
Avatar billede softspot Forsker
10. februar 2006 - 14:34 #4
Velbekomme... :)
Avatar billede softspot Forsker
10. februar 2006 - 16:15 #5
Tak 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