Avatar billede beef12 Nybegynder
10. juni 2006 - 13:35 Der er 9 kommentarer og
1 løsning

Input felter som er afhængige af hinanden

Jeg vil gerne have en form som indeholder en checkbox og en dropdown (select).
Eksempel:

<form>
<input type="checkbox" name="a">
<select name="b">
<option>nr1</option>
<option>nr2</option>
</select>
<form>

Jeg har brug for et javascript som sætter select'en til "nr0" hvis checkbox'en er slået fra.
Avatar billede aeroone Nybegynder
10. juni 2006 - 13:58 #1
Er der ingen knapper i denne form? hvis jo, kan du da tjekke om checkboxen er '0' hvis ja, så 'b' lig med 'nr0'

Er det PHP eller ASP? skal det ind i en DB?
Avatar billede beef12 Nybegynder
10. juni 2006 - 15:52 #2
Nej - det er javascript (se kategori), så det skal ske "on-the-fly", derfor er submit-knappen ligegyldig.
Avatar billede mclemens Nybegynder
10. juni 2006 - 17:22 #3
Da nr0 ikke eksisterer i som en option ud fra dit eksempel så skal den måske være sådan her - og så remove child hvis man afkrydser igen... der er sat lidt forcuserings kontrol og onchange kontrol på selecten også - så man ikke kan ændre værdien uden at fjerne afkrydsningen igen ...

- joh, man kan selvfølgelig deaktivere javascript i browseren
... men det gælder jo for alle javascript komponenter ...

- Nåh, et skud i tågen ...
... var det noget i den stil?


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
chkval=false;

function chkit(tn){
chkval=tn.checked;
if(chkval){
  tmp=document.createElement("option");
  tmp2=document.createTextNode("nr0");
  tmp.appendChild(tmp2);
  tn.form.b.insertBefore(tmp,tn.form.b.childNodes[1]);
  tn.form.b.selectedIndex=0;
}
else tn.form.b.removeChild(tn.form.b.childNodes[1]);
}
</script>

</head><body>
<form>
<input type="checkbox" name="a" onclick="chkit(this);">
<select name="b" onclick="if(chkval)document.body.focus();" onchange="if(chkval)this.selectedIndex=0;">
<option>nr1</option>
<option>nr2</option>
</select>
<form>
</body></html>
Avatar billede mclemens Nybegynder
10. juni 2006 - 17:31 #4
Der er et lille opdateringsproblem hvis man afmærker
og så opdaterer ... det kan løses med denne lille tilføjelse:

...
window.onload=function(){tmpn=document.formnavn.a.checked;if(tmpn)chkit(document.formnavn.a);}
</script>

</head><body>
<form name="formnavn">
...
Avatar billede mclemens Nybegynder
10. juni 2006 - 17:40 #5
window.onload=function(){tn=document.formnavn.a;if(tn.checked)chkit(tn);}
</script>

</head><body>
<form name="formnavn">

(forkortet i onload funktionen)
Avatar billede mclemens Nybegynder
10. juni 2006 - 17:51 #6
Nej, den skulle vendes rundt ... du ville have den til at være deaktiveret hvis man ikke havde afkrydset - jeg kom til at lave det modsatte... her er koden vendt en gang på hovedet... og med automatisk fjernelse af en evt. afkrydsning ved onload/reload...


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
chkval=false;tmpchk=0;

function chkit(tn){
chkval=tn.checked;
if((!chkval)||(tmpchk==0)){
  tmp=document.createElement("option");
  tmp2=document.createTextNode("nr0");
  tmp.appendChild(tmp2);
  tn.form.b.insertBefore(tmp,tn.form.b.childNodes[1]);
  tn.form.b.selectedIndex=0;
}
else tn.form.b.removeChild(tn.form.b.childNodes[1]);
tmpchk=1;
}

window.onload=function(){tn=document.formnavn.a;tn.checked=false;chkit(tn);}
</script>

</head><body>
<form name="formnavn" action="#">
<input type="checkbox" name="a" onclick="chkit(this);">
<select name="b" onmousedown="if(!chkval)document.body.focus();" onchange="if(!chkval)this.selectedIndex=0;">
<option>nr1</option>
<option>nr2</option>
</select>
<form>
</body></html>
Avatar billede beef12 Nybegynder
11. juni 2006 - 20:00 #7
Takker - smid gerne et svar
Avatar billede mclemens Nybegynder
11. juni 2006 - 20:02 #8
ok :)
Avatar billede mclemens Nybegynder
12. juni 2006 - 01:03 #9
- og tak for point :)
Avatar billede beef12 Nybegynder
12. juni 2006 - 19:33 #10
Jamen, det var da så lidt :-)
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