Avatar billede nemlig Professor
12. august 2010 - 14:19 Der er 7 kommentarer og
1 løsning

Inputformlar - fold ud og sammentræk

Hejsa.

Jeg har en inputformlar med en del felter.
Jeg vil gerne dele siden op i afsnit, som fx. "Navneoplysninger", "Kontaktoplysninger" osv.

Felterne til kontaktoplysninger vil jeg gerne pr. default skjule, men ved klik på et lille plus "+ Angiv kontaktoplysninger" udfoldes felterne, og det lille plus og tekst ændrer sig til "- Skjul kontaktoplysninger". Og ved klik på "- Skjul kontaktoplysninger", sammentrækkes området igen osv.

Nogen der kan bidrage med noget konkret eller link til vejledninger.
Avatar billede majbom Novice
12. august 2010 - 14:52 #1
du kan smide de felter der skal skjules i en div og sætte display til none og når man klikker på plusset sætte display til block?
Avatar billede nemlig Professor
12. august 2010 - 15:09 #2
Kan du henvise til noget kode-eksempel?
Avatar billede majbom Novice
12. august 2010 - 15:59 #3
<script type="text/javascript">
function toggleFields(divId){
  var div = document.getElementById('div_'+divId);
  var img = document.getElementById('img_'+divId);
  if(div.style.display=='none'){
      div.style.display='block';
      img.src='minus.png';
  }else{
      div.style.display='none';
      img.src='plus.png';
  }
}
</script>


<div><img src="plus.png" alt=""><div style="display:none;">(input fields)</div>


noget i den stil, det er ikke testet...
Avatar billede majbom Novice
12. august 2010 - 16:00 #4
og der skal self være et id på både img og den skjulte div:

img id: img_fields
div id: div_fields

og så en onclick på img'et: onclick="toggleFields('fields')"

:)
Avatar billede intenz Novice
12. august 2010 - 16:02 #5
Hvis du bruger jQuery kan det gøres relativt nemt.


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
function showHide(id) {
  var element = $('#'+id);
  if ( element.is(":visible") ) {
    element.hide(500);
  } else {
    element.show(500);
  }
}
</script>

<a href="#" onclick="showHide('hiddenContent');">Vis/skjul</a>
<div id="hiddenContent">Skjult indhold</div>


"500" viser animations hastigheden, kan ændres efter behov.
Avatar billede simon_jacobsen Nybegynder
12. august 2010 - 16:05 #6
Jeg vil umiddelbart anbefale at du kiggede på Jquery toggle:
http://api.jquery.com/toggle/
Via Jquery kan du lave nogle rimelig "flashy" effekter, meget simpelt.
koden her illustrerer det rimelig godt:
<!DOCTYPE html>
<html>
<head>
  <style>
p { background:#dad;
font-weight:bold;
font-size:16px; }
</style>
  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
    <button>Toggle 'em</button>

<p>Hiya</p>
<p>Such interesting text, eh?</p>
<script>
$("button").click(function () {
$("p").toggle("slow");
});   
</script>

</body>
</html>
Avatar billede nemlig Professor
24. august 2010 - 22:49 #7
Jeg er først nu kommet igang med at prøve jeres forslag.
Umiddelbart virker Intenz's forslag fint.
Jeg har dog et par udfordringer:

1. Hvordan får jeg den til at være skjult som standard.
2. Hvis jeg nu har 2-3 sektioner, som skal være skjult med mulighed for at udfolde, hvordan skelner jeg mellem de forskellige sektioner?
Avatar billede intenz Novice
25. august 2010 - 14:37 #8
1. Indsæt en css attribute med display: none; på hver element. Så bliver de skjult fra start.

2. Den kode jeg skrev, har jeg navngivet DIV'en med 'hiddenContent', som også sendes som en del af vis/skjul linket. Giv hver element et unikt ID, så skelner den mellem dem.
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