Avatar billede leasing Nybegynder
11. oktober 2005 - 13:01 Der er 7 kommentarer og
1 løsning

Enable felter hvis en betingelse er opfyldt

Jeg har en form der ser således ud:
1 Felt: kontaktperson
2 Dropdown: oprettede kontaktpersoner
3 Felt: brugernavn
4 Felt: brugerkode

Hvis der skrives i (1) så skal (3) og (4) gøres enabled, men vælges en kontaktperson i (2) så skal (3) og (4) gøres disabled og (1) skal indholdet slettes, men skal være skrivbar.

Er der nogen der har en go´ ide til det.
Avatar billede mm12010 Nybegynder
11. oktober 2005 - 13:15 #1
<form action="" method="">
      kontaktperson:<input type="text" name="kontaktperson" onchange="this.form.brugernavn.disabled=this.form.brugkode.disabled=(this.value==this.defaultValue);"><br>
      oprettede kontaktpersoner:<select name="kontaktpersoner" onchange="if(this.selectedIndex!=0){this.form.brugernavn.disabled=this.form.brugkode.disabled=true;this.form.kontaktperson.value='';}"><option value="0">0</option><option value="1">1</option><option value="2">2</option></select><br>
      brugernavn:<input type="text" name="brugernavn" disabled="disabled"><br>
      brugkode:<input type="text" name="brugkode" disabled="disabled">
</form>
Avatar billede leasing Nybegynder
11. oktober 2005 - 13:28 #2
sådan...gider du lave et svar.
Takker mange gange.
Avatar billede softspot Forsker
11. oktober 2005 - 13:31 #3
I bund og grund den samme løsning som mm12010, men jeg ville nok vælge at lægge tilstandshåndteringen ud i en separat funktion - det er alt andet lige lidt lettere at overskue.

<script type="text/javascript">
function doSetState(obj) {
  if(obj.name == "kontaktperson") {
    obj.form.brugernavn.disabled = (obj.value==obj.defaultValue);
    obj.form.brugkode.disabled = (obj.value==obj.defaultValue);
  }
  else if(obj.name == "kontaktpersoner") {
    if(obj.selectedIndex!=0) {
      obj.form.brugernavn.disabled = true;
      obj.form.brugkode.disabled = true;
      obj.form.kontaktperson.value='';
    }
  }
}
</script>

<form action="" method="" ID="Form1">
  kontaktperson:<input type="text" name="kontaktperson" onkeyup="doSetState(this)"><br>
  oprettede kontaktpersoner:
  <select name="kontaktpersoner" onchange="doSetState(this)">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
  </select><br>
  brugernavn:<input type="text" name="brugernavn" disabled="disabled"><br>
  brugkode:<input type="text" name="brugkode" disabled="disabled">
</form>
Avatar billede mm12010 Nybegynder
11. oktober 2005 - 13:34 #4
selv tak :o)
Avatar billede mm12010 Nybegynder
11. oktober 2005 - 13:36 #5
softspot >> i mange tilfælde ville jeg give dig ret, men når det ikke er mere end det her, syntes jeg ikke der er noget vundet ved at lægge det ud en funktion...
Avatar billede softspot Forsker
11. oktober 2005 - 13:47 #6
Nej, det er klart at det med dette antal felter og denne kompleksitet ikke kan betale sig.

Jeg synes bare at det rart, at man igennem et system, følger den samme kodestuktur (næsten) uanset om det drejer sig om store eller små opgaver og dermed har en rød tråd - koden bliver så meget lettere at vedligholde hvis tingene gøres på samme måde hele tiden. Desuden skal der ikke komme ret mange flere felter på formularen før man alligevel skal ud i en omskrivning og så sparer man jo lidt arbejde der, hvis man har gjort det i en selvstændig funktion fra starten.

Der er naturligvis også situationer hvor man er nød til at gå på kompromis af hensyn til f.eks. performance, men det bør være et bevidst valg/prioritering i den enkelte situation. Nå men dette kan blive en lang debat, som i virkeligheden nok ikke hører til her, så jeg vil bare afslutte nu... :)
Avatar billede leasing Nybegynder
11. oktober 2005 - 16:36 #7
mm12010> hvis jeg nu har 4 andre felter ved navn:
adresse, mail, telefon, mobil
som også skal være disabled, hvis man vælger en person i dropdownboksen, hvordan klares den så?
Avatar billede roenving Novice
11. oktober 2005 - 16:38 #8
Sådan som softspot viser !-)
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