Avatar billede putz Nybegynder
31. oktober 2000 - 01:25 Der er 16 kommentarer og
1 løsning

Dynamiske checkboxe! Kan dette lade sig gøre??

Hej jeg har et problem.
Jeg skal have lavet en \"slags\" vis/vis ikke funktion. Jeg har en dynamisk genereret form hvori der indgår x antal checkboxe. Disse checkboxe skal, hvis man checker dem, få et textfield til at vises og når man unchecker skal textfieldet ikke vises. Dette kan jeg gøre med dette udemærkede script (fundet på Eksperten), men det virker kun når der er en checkbox og kun i ie.
Det jeg gerne vil er altså at have ændret scriptet så det virker på x antal checkboxe og både til ie og ns.

Håber det giver mening? jeg vedlægger scriptet så i kan se hvad jeg snakker om.

<script language=\"javascript\">
  function checkState(chBox) {
    if(chBox.checked)
      addTextField();
    else
      removeTextField();
  }
  function addTextField() {
    document.all.adiv.innerHTML=\"<input type=\'text\' id=\'text\' value=\'Skriv navn her\'/>\";
  }
  function removeTextField() {
    document.all.adiv.innerHTML=\"\";
  }
</script>

Her kalder jeg funktionen
response.write(\"<input type=checkbox onClick=\'checkState(this)\' name=\'\")

Og dette er textfieldet
response.write(\"\'><div id=\'adiv\'>Her skulle der gerne snart stå noget brugbart:)</div>\")

Håber på snarlig hjælp, da det er lidt en hastesag
Peace Putz
Avatar billede olebole Juniormester
31. oktober 2000 - 02:48 #1
<ole>
Du må lige forklare, hvad du skal bruge det til, da du ikke kan have <div>\'s inde i en form - så skal der noget workaround til.
/mvh
</bole>
Avatar billede spacey Nybegynder
31. oktober 2000 - 10:34 #2
Ole>>> Ikke divs inde i en form?

Det virker da normalt udemærket, måske ikke på din pisse mac, men i både ie 5.0 og ns 4.04 på en RIGTIG computer (Pc)!

prøv fx. som jeg skrev til \"smukke\" i et andet spm!:

<html>
<head>

<script language=\"JavaScript\">
<!--
var ns = document.layers;
var ie = document.all;
function Skriv() {
    if (ns) {
        document.layers[\'test\'].document.open();
        document.layers[\'test\'].document.write(\"Du skal udfylde dette felt!\");
        document.layers[\'test\'].document.close();
    } else if (ie) {
        document.all[\'test\'].innerHTML = \"Du skal udfylde dette felt!\";
    }
    }
  //-->
</script>
<style type=\"text/css\">
<!--
.test { position:absolute;}
-->
</style>

</head>
<body>

<form>
<br><br>
<a href=\"java script:Skriv()\">Klik her</a>
<br><br>
<div id=\"test\" class=\"test\"></div>
</form>
</body>
</html>
Avatar billede lthrane Nybegynder
31. oktober 2000 - 11:35 #3
>>spacey
det virker IKKE på min RIGTIGE computer med NT - hverken i Opera 4.02 (den fedeste browser der findes), IE5 eller NS6 pr1

lthrane
Avatar billede putz Nybegynder
31. oktober 2000 - 12:11 #4
Ole>>> Det skal bruges i en formular hvor der er muligheden for at skrive navn i et antal texfelter. Endvidere kan der være muligheden for at tilføje et ekstra textfelt, ved et tryk i en checkbox. Dvs at jeg gerne vil vide hvordan jeg får lavet sådan at, når man checker checkboxen, så kommer der et texfelt frem og når man unchecker igen skal feltet forsvinde. Både textfelt og checkbox skal have et dynamisk genereret navn og der skal kunne være x antal af hver!

Håber det kaster lidt mere lys over problemet, og til i to andre brug venligst et andet forum til spørgsmål/kommentarer omkring PC og MAC :)
Avatar billede spacey Nybegynder
31. oktober 2000 - 12:11 #5
lthrane>>> Er du sikker på at du ikke gør noget forkert?
Jeg har lige testet det i IE 5 på en winnt 4.0 server, og der virker det også fint....
Avatar billede spacey Nybegynder
31. oktober 2000 - 12:24 #6
putz>>> Der er ingen grund til at skulle vælge et andet forum til at diskutere kompatibilitet, da det faktisk omhandler hvilken løsning vi kan give dig på dit problem!
Avatar billede putz Nybegynder
31. oktober 2000 - 12:34 #7
Ok point taken :)
Avatar billede olebole Juniormester
31. oktober 2000 - 12:36 #8
Man kan ikke have inputs liggende i forskellige <div>\'s i en form - hvis man går efter X-browser-kompabillitet. Hvis man ikke tror på mig, kan jeg oplyse, at Dan Steinman er kommet til samme resultat. Se evt:
    http://www.dansteinman.com/dynduo/en/forms.html

At spacey kommenterer min \'pisse-Mac\' er en ganske venlig \'inside\' ting, vi har kørende :o)
Kompatibillitet er netop kerneproblemet i dit spørgsmål. Jeg sidder midt i noget arbejde, men kikker gerne på det senere.
/mvh
Avatar billede lthrane Nybegynder
31. oktober 2000 - 12:53 #9
>>putz
jeg tillader mig lige at komme med endnu et indlæg, selv om det ikke er et bud på en løsning.

>>spacey
Jeg ved ikke om jeg gør noget forkert - jeg har kopieret fra <html> til </html> ind i en .htm fil, og åbnet den i de nævnte browsere. Ved tryk på \'Klik her\' sker dette:
- Opera: no such variable \"Skriv\"
- IE: run time error has occurred, line 0, object expected
- NS: der sker ingenting

Men på den anden side set kan ovenstående vel være ligemeget, efter man har læst olebole\'s henvisning....
Avatar billede spacey Nybegynder
31. oktober 2000 - 13:28 #10
Ole>>>
Det ved jeg godt, men det var egenligt heller ikke den påstand jeg havde en anden mening om :-)

Du skrev at man ikke kan have div elementer i en form, hvilket man godt kan (i de browsere jeg har testet i!).
Man kan bare kun have input felter i div elementerne i IE, og ikke i NS som behandler input elementer noget anderledes.

lthrane>>> Well, det lyder jo underligt, men what the fuck, det er ikke løsningen på putz problem anyway.
Avatar billede olebole Juniormester
31. oktober 2000 - 14:53 #11
Så er der en version, der virker. Det må du så selv bygge videre på:

<html>
<head>
<script language=\"JavaScript\">
<!--
var ns = (document.layers)? true : false;
var ie = (document.all)? true : false;

function checkMe(which) {
    divObjId = which.name + \"Div\";
    obj = (ns)? eval(\"document.layers.\"+divObjId) : eval(\"document.all.\"+divObjId);
    if (which.checked == true) {
        if (ns) {
            obj.visibility = \"show\";
        }else{
            obj.style.visibility = \"visible\";
        }
    }else{
        if (ns) {
            obj.visibility = \"hide\";
        }else{
            obj.style.visibility = \"hidden\";
        }
    }
}
function setForm(which) {
    num = which.name.substring(which.name.indexOf(\'tex\')+3,which.name.length);
    eval(\"document.f.box\"+num+\".value = \'\"+which.value+\"\'\");
}
//-->
</script>
<style type=\"text/css\">
<!--
.texDiv { position:absolute; visibility:hidden}
-->
</style>
</head>
<body>

<form name=\"f\">
    <input type=\"text\" name=\"box1\"><br>
    <input type=\"text\" name=\"box2\">
</form>

<form><input type=\"checkbox\" name=\"ch1\" onclick=\"checkMe(this)\"></form>
<div id=\"ch1Div\" class=\"texDiv\">
    <form><input type=\"text\" name=\"tex1\" onkeyup=\"setForm(this);\" onchange=\"setForm(this);\"></form>
</div>

<br><br><br>

<form><input type=\"checkbox\" name=\"ch2\" onclick=\"checkMe(this)\"></form>
<div id=\"ch2Div\" class=\"texDiv\">
    <form><input type=\"text\" name=\"tex2\" onkeyup=\"setForm(this);\" onchange=\"setForm(this);\"></form>
</div>

</body>
</html>

/mvh
Avatar billede olebole Juniormester
31. oktober 2000 - 14:57 #12
PS: Formen \'f\' bør være den form, du ender med at sende afsted.
De to inputs \'box1\' og \'box2\' bør vel være type=\'hidden\'...de er kun type=\"text\" for at du kan se, hvad der sker.
Du kan udvide antallet af check-boxe/div/inputs så meget, du lyster.
/mvh
Avatar billede putz Nybegynder
31. oktober 2000 - 19:04 #13
Ole>>> Jeg takker mange gange for scriptet, men det er nu ikke helt det jeg er ude efter. Hvis bare løsningen var sådan var det superfedt, men problemet er at jeg ikke ved hvor mange checkboxe og textfelter der er til at starte med. Disse bliver genereret dynamisk ud fra brugerens valg. Dvs at jeg ikke kender eksempelvis <div id=\"ch2Div\" class=\"texDiv\"> på forhånd og derfor er det disse \"tags\" der gerne skulle kunne genereres dynamisk.
Ved du om man kan lave dynamiske div tags? og i så fald hvordan? Jeg tænker noget i retning af
<div id=\"enVariabel_der_bliver_talt_op\"> for derefter at bruge denne i dit script! Nå men du får dine point, for et godt stykke arbejde, selv om det ikke løser mit problem.

Peace Putz
Avatar billede putz Nybegynder
01. november 2000 - 10:22 #14
Ole>>> Du er gud og jeg er dybt taknemmelig.
Ud fra dit script med nogle modifikationer har jeg fået problemet løst (dog kun i IE). Jeg har lavet div id\'et dynamisk og nu kan jeg have ligeså mange checkboxe og textfelter det skal være :).
Og alt foregår dynamisk, så tusind tak for hjælpen Ole.

Peace Putz
Avatar billede olebole Juniormester
01. november 2000 - 10:32 #15
Det var så lidt  :o)
Smid koden op...så er den X-browser, inden du kan nå at sige \'Robinson Crusoe\'...!
/mvh
Avatar billede putz Nybegynder
02. november 2000 - 00:03 #16
Hej Ole
Her kommer der en lille bid kode :)

Dette står inde i en laaaaaaaaaang \"for sætning\"

If etellerAndet = \"Falsk\" then
response.write(\"&nbsp;\")
Else

response.write(\"kryds af her:<input type=checkbox onclick=\'checkMe(this)\' name=\'text\"&vaerelseID&\"\'>\")

response.write(\"<div id=\'text\"&vaerelseID&\"Div\' class=\'texDiv\'><input type=text name=\'\"&vaerelseID&\"_Opredningsnavn\' value=\'Skriv navn her\'></div>\")

og så en masse mere. Jeg kan forstå på din kode at NS behøver \"nye\" form tags for at virke og jeg har da også prøvet at lave textfeltet inde i nye form tags og jeg kan også godt få NS til at vise/ikke vise textfelterne ved click i checkboxene, men textfelterne står mærkeligt på siden og min \"submit\" knap er væk.

Any more help would be greatly appreciated

Peace Putz
Avatar billede olebole Juniormester
02. november 2000 - 04:18 #17
Har du mulighed for at uploade et dokument, jeg kan se?
Hvis du ikke vil ahve URL\'en ud her, kan du maile den til mig:
oc@adr.dk
/mvh
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