Avatar billede avlund Nybegynder
05. september 2001 - 17:33 Der er 19 kommentarer og
2 løsninger

At vise/skjule ting dynamisk i en form uden at reloade

Hej folkens.

I kender godt det script hvor man vælger noget fra en dropdown, og så ændres indholdet i andre dropdowns ud fra hvad man har valgt, ikke? Uden at siden reloades vel at mærke.

OK, hvad jeg skal bruge er lidt hen deraf:

Hvordan sørger jeg for, at når brugeren vælger en option i dropdown-boksen, vises de rigtige textfields derunder? Hvis vi f.eks. siger at der er 3 fields, så vil option A måske vise field 1 og 2 og skjule field 3, mens option B vil skjule de to første og vise field C.

Håber det gav mening.
Avatar billede avlund Nybegynder
05. september 2001 - 17:33 #1
Og en tilføjelse: det hele skal foregå, UDEN at siden reloades.
Avatar billede nikolajdu Nybegynder
05. september 2001 - 17:38 #2
Noget i den her stil??

<html>
<head>
    <title>Untitled</title>
<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">
<!--

function changeStuff(choice) {

    if (choice == \'other\') {
        document.all[\'dynfield\'].innerHTML = \'<input type=\"text\">\';
    } else if (choice == \'telefon\') {
        document.all[\'dynfield\'].innerHTML = \'Hej hej\';
    } else if (choice == \'email\') {
        document.all[\'dynfield\'].innerHTML = \'Nikolajdu leger med\';
    }
}

//-->
</SCRIPT>   
   
</head>

<body>
<form>
<SELECT onChange=\"changeStuff(this.options[this.selectedIndex].value);\">
    <option>
  <OPTION VALUE=\"email\">E-mail</OPTION>
  <OPTION VALUE=\"telefon\">Telefon</OPTION>
  <OPTION VALUE=\"other\">OTHER</OPTION>
</SELECT>

<div id=\"dynfield\">&nbsp</div>

</form> 

</body>
</html>
Avatar billede jgp Nybegynder
05. september 2001 - 17:45 #3
Eller du kan bruge den her, som skifter ud i dropdown boxen... Håber den kan forklare sig selv lidt:


function skiftassing(todo) {
  var punkter = new Array()
  if (todo == \"yes\") {
    punkter[0] = \"new Option(\'Vælg assigngruppe\', \'\', false, false)\";
  }
  else {
    tjek = document.FrontPage_Form1.GLassigned.options[document.FrontPage_Form1.GLassigned.options.selectedIndex].value
    punkter[0] = \"new Option(tjek, tjek, false, false)\";
  }
  switch(document.FrontPage_Form1.GLkunde[document.FrontPage_Form1.GLkunde.selectedIndex].value) {
    case \'AMS\':
      punkter[1] = new Option(\'CSC\',\'CSC\');
    break;
    case \'OSS\':
      punkter[1] = new Option(\'DMD Unix\',\'DMD Unix\');
    break;
    default:
    break;
  }
document.FrontPage_Form1.GLassigned.options.length = 0;
for (var i=0;i<punkter.length; i++) {
  document.FrontPage_Form1.GLassigned.add(eval(punkter[i]));
  }
}
Avatar billede avlund Nybegynder
05. september 2001 - 17:47 #4
jgp... jeg er for træt/doven til at ændre i kode lige nu... kan du ikke sætte den i fuld kontekst et sted?
Avatar billede jgp Nybegynder
05. september 2001 - 17:56 #5
avlund: prøv at sætte den kode der ind i dit script. Og onchange=\"skiftassing(\'no\') på den select box du vil have scriptet kaldes fra.

FrontPage_Form1 = den form din selects er i
GLkunde = navnet på selectboxen som scriptet kaldes fra
GLassigned = navnet på den select box du vil ændre

se hvad der sker ;-)

Ellers spørg
JGP

Avatar billede avlund Nybegynder
05. september 2001 - 18:02 #6
Nåeh!

Jamen det var jo det script jeg beskrev i starten af spørgsmålet... som jeg IKKE skulle bruge, men en afart deraf...

Nikolajdu har derimod fat i noget af det rigtige.
Avatar billede jgp Nybegynder
05. september 2001 - 18:08 #7
Hmm jammen er det så ikke bare at gå ind og lave id\'erne på de forskellgie elemente Hidden eller visible? Alt efter hvad der er blevet valgt i dropdownboxen?
Avatar billede avlund Nybegynder
05. september 2001 - 18:11 #8
Jo, også en mulighed. Jeg er bare ikke ferm til Javascript - jeg kan finde ud af ASP, men det andet styrer jeg altså ikke.
Avatar billede avlund Nybegynder
05. september 2001 - 18:15 #9
Jeg tror faktisk endda det er en bedre idé, da den skal have én af værdierne initialiseret fra start.
Avatar billede avlund Nybegynder
05. september 2001 - 18:16 #10
Har du noget kode?
Avatar billede jgp Nybegynder
05. september 2001 - 18:18 #11
function farmand() {
  if (event.srcElement.value == \"den value du vil reagere på\") {
    ditelement.style.visibility = \"visible\";
  }
}

Og så laver du ellers bare en onchange=\"farmand();\"
Avatar billede jgp Nybegynder
05. september 2001 - 18:28 #12
Den kraver selvfølig at ditelement i css er difineret sådan her:

# ditelement {visibility: hidden;}
Avatar billede avlund Nybegynder
05. september 2001 - 22:46 #13
Hmm! Jeg kan slet, slet ikke få det til at virke...

<style type=\"text/css\">
<--
#bands {
    visibility: hidden;
}
-->
</style>

<script language=\"JavaScript\" type=\"text/javascript\">
function changer() {
  if (form1.bandgen.value == \'band\') {
    bands.style.visibility = \'visible\';
  } else if (form1.bandgen.value == \'general\') {
      bands.style.visibility = \'hidden\';
}
}
</script>
Avatar billede avlund Nybegynder
05. september 2001 - 22:49 #14
... den siger at \"bands\" er undefined.
Avatar billede roenving Novice
06. september 2001 - 00:24 #15
<elementType id=\'bands\' ... >

Nogle (af de browsere, som *næsten* ikke forstår css) kræver at du bruger name=\'\'

Det er *måske* dit problem.

hth
jes
Avatar billede jgp Nybegynder
06. september 2001 - 08:30 #16
prøv at bruge event.srcElement istedet for form1.bandgen
Og så skal du sørger for du har et element der har en id=\"bands\"
Avatar billede nikolajdu Nybegynder
27. september 2001 - 17:30 #17
Hvorn går det?
Avatar billede avlund Nybegynder
27. september 2001 - 18:23 #18
Ja, jeg havde helt svedt det ud... har haft så sindssygt travlt.
Avatar billede avlund Nybegynder
27. september 2001 - 18:24 #19
Undskyld! Anyway, jeres løsninger er gode på hver jeres måde. Nu skal det hele bare lige pludselig kunne ses i Netscape, men jeg er blevet inspireret, så jeg finder nok ud af det. Jeg takker for begge forslag...
Avatar billede avlund Nybegynder
27. september 2001 - 18:25 #20
...og deler halv skade.
Avatar billede nikolajdu Nybegynder
27. september 2001 - 18:28 #21
Min kan kun virke i IE 4 og opefter.

Hvis du ændrer den lidt kan den også virke i Netscape 6.x, men aldrig i 4.x. Tilgengæld vil den så kun virke i IE 5.0 og op med mindre vi laver flere versions tjeck.

Skift

document.all

med

document.getElementById
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