Avatar billede mecenor Nybegynder
10. juli 2004 - 16:01 Der er 20 kommentarer og
1 løsning

Checkbox skal gøre tekstfelter aktive

Hej,
ved klik i checkbox skal det være muligt at taste en anden leveringsadresse end køberens ind. Eller skal tekstfelterne være disabled(er det muligt at 'fade' dem med ex grå farve?)
Jeg ved godt at dette er behandlet andensteds på eksperten og en masse andre steder, men jeg kan simpelthen ikke få noget til at virker... Det skal gerne kunne gøres uden submit, da kundeoplysningerne skal postes ved submit.
Gætter på at javascript er det rigtige sted at stille spørgsmålet, men alle 'sprog' er velkomne :)

Sådan ser koden ud uden funktioner:

<form name="Oplysninger" action="redirect.asp" method="post">
                        <table align="center">
                            <tr>
                                <td>&nbsp;</td>
                                <td class="h4" bgcolor="#333333">&nbsp;Køber&nbsp;</td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td align="right">
                                &nbsp;<input type="checkbox" name="LevCheckbox">
                                </td>
                                <td class="h4" bgcolor="#333333">&nbsp;&lt; Klik for anden leveringsadresse&nbsp;</td>
                            </tr>
                            <tr>
                                <td>Navn:</td>
                                <td><input type="text" name="Name" id="navn" size="30"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Navn:</td>
                                <td><input type="text" name="LevName" id="Levnavn" size="30"></td>
                            </tr>
                            <tr>
                                <td>Adresse:</td>
                                <td><input type="text" name="Address" size="30"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Adresse:</td>
                                <td><input type="text" name="LevAddress" size="30"></td>
                            </tr>
                            <tr>
                                <td>Postnummer:</td>
                                <td><input type="text" name="ZipCode" size="2" maxlength="4"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Postnummer:</td>
                                <td><input type="text" name="LevZipCode" size="2" maxlength="4"></td>
                            </tr>
                            <tr>
                                <td>By:</td>
                                <td><input type="text" name="City" size="30"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>By:</td>
                                <td><input type="text" name="LevCity" size="30"></td>
                            </tr>
                            <tr>
                                <td>Telefon:</td>
                                <td><input type="text" name="Phone" size="30"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Evt. Telefon:</td>
                                <td><input type="text" name="LevPhone" size="30"></td>
                            </tr>
                            <tr>
                                <td>E-mail:</td>
                                <td><input type="text" name="Email" size="30"></td>
                            </tr>
                            <tr>
                                <td>&nbsp;</td>
                                <td><input type="Submit" value="Kun til intern testbrug"></td>
                            </tr>
                        </table>
                        </form>
Avatar billede roenving Novice
10. juli 2004 - 16:18 #1
Sådan ?-)

<script type="text/javascript">
function changeVal(elm){
  if(elm.name=="LevCheckbox"){
    var e = elm.form.elements;
    for(i=0;e.length>i;i++){
      if(e[i]!=elm&&e[i].name.indexOf("Lev")==0){
        e[i].value=(elm.checked)?'':elm.form.elements[e[i].name.substring(3)].value;
      }
    }
  }else{
    if(!elm.form.LevCheckbox.checked){
      elm.form.elements["Lev"+elm.name].value = elm.value
    }
  }
}
</script>
                    <form name="Oplysninger" action="redirect.asp" method="post">
                        <table align="center">
                            <tr>
                                <td>&nbsp;</td>
                                <td class="h4" bgcolor="#333333">&nbsp;Køber&nbsp;</td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td align="right">
                                &nbsp;<input type="checkbox" name="LevCheckbox" onclick="changeVal(this);">
                                </td>
                                <td class="h4" style="background:#333333;color:white;">&nbsp;&lt; Klik for anden leveringsadresse&nbsp;</td>
                            </tr>
                            <tr>
                                <td>Navn:</td>
                                <td><input type="text" name="Name" id="navn" size="30" onchange="changeVal(this);"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Navn:</td>
                                <td><input type="text" name="LevName" id="Levnavn" size="30" disabled="disabled"></td>
                            </tr>
                            <tr>
                                <td>Adresse:</td>
                                <td><input type="text" name="Address" size="30" onchange="changeVal(this);"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Adresse:</td>
                                <td><input type="text" name="LevAddress" size="30" disabled="disabled"></td>
                            </tr>
                            <tr>
                                <td>Postnummer:</td>
                                <td><input type="text" name="ZipCode" size="2" maxlength="4" onchange="changeVal(this);"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Postnummer:</td>
                                <td><input type="text" name="LevZipCode" size="2" maxlength="4" disabled="disabled"></td>
                            </tr>
                            <tr>
                                <td>By:</td>
                                <td><input type="text" name="City" size="30" onchange="changeVal(this);"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>By:</td>
                                <td><input type="text" name="LevCity" size="30" disabled="disabled"></td>
                            </tr>
                            <tr>
                                <td>Telefon:</td>
                                <td><input type="text" name="Phone" size="30" onchange="changeVal(this);"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Evt. Telefon:</td>
                                <td><input type="text" name="LevPhone" size="30" disabled="disabled"></td>
                            </tr>
                            <tr>
                                <td>E-mail:</td>
                                <td><input type="text" name="Email" size="30"></td>
                            </tr>
                            <tr>
                                <td>&nbsp;</td>
                                <td><input type="Submit" value="Kun til intern testbrug"></td>
                            </tr>
                        </table>
                    </form>
Avatar billede thesurfer Nybegynder
10. juli 2004 - 16:26 #2
roenving> tror ikke at det er det han mener :-)
Ideen er vist:
- man har 2x felter: 1 til køberens adresse og 1 til leveringsadresse, hvis den ikke er den samme som køberens.
- lev-adr-felterne (dem i højreside) er disabled
- hvis man sætter hak i checkboksen, kan man skrive i lev-adr-felter.. ellers er de disabled
Avatar billede roenving Novice
10. juli 2004 - 16:28 #3
Er det ikke netop det, jeg har lavet ?-)
Avatar billede thesurfer Nybegynder
10. juli 2004 - 16:29 #4
nej :-)
Du enabler i hvertfald ikke lev-adr-felterne :-)
Plus at du bare kopiere indholdet fra køber-felterne til lev-adr-felterne :-)
Avatar billede roenving Novice
10. juli 2004 - 16:35 #5
Argh ...

Det var jo meningen, som jeg glemte i farten !-)

En linje mere i scriptet:

<script type="text/javascript">
function changeVal(elm){
  if(elm.name=="LevCheckbox"){
    var e = elm.form.elements;
    for(i=0;e.length>i;i++){
      if(e[i]!=elm&&e[i].name.indexOf("Lev")==0){
        e[i].value=(elm.checked)?'':elm.form.elements[e[i].name.substring(3)].value;
        e[i].disabled=(elm.checked)?false:true;
      }
    }
  }else{
    if(!elm.form.LevCheckbox.checked){
      elm.form.elements["Lev"+elm.name].value = elm.value
    }
  }
}
</script>
Avatar billede thesurfer Nybegynder
10. juli 2004 - 16:39 #6
- Du mangler stadig " 'fade' dem med ex grå farve"-delen :-)  kan nemt klares med CSS-class og JS
- og det ville (måske) være nice, hvis felterne ikke blev resettet, når man deaktiverede dem igen :-)
Avatar billede roenving Novice
10. juli 2004 - 16:50 #7
Når et felt er disabled er teksten automatisk udgrået i IE, og jeg har ikke lige checked den i Mozilla, da den øvrige funktionalitet virker cross-browser, men det er jo ikke lige svært at sætte en baggrundsfarve, men tåbeligt med en class-ændring !-)

-- og det er helt med vilje at jeg resetter felterne, for så er det åbenlyst for brugeren, at der sker noget !-)

-- og i Mozilla er den automatisk grå, når den er disabled, så hvad siger mecenor ...

Vil du have en grå baggrund på også, når de er disabled ?o]
Avatar billede roenving Novice
10. juli 2004 - 17:46 #8
Med en grå baggrund bliver det:

<script type="text/javascript">
function changeVal(elm){
  if(elm.name=="LevCheckbox"){
    var e = elm.form.elements;
    for(i=0;e.length>i;i++){
      if(e[i]!=elm&&e[i].name.indexOf("Lev")==0){
        e[i].value=(elm.checked)?'':elm.form.elements[e[i].name.substring(3)].value;
        e[i].disabled=(elm.checked)?false:true;
        e[i].style.backgroundColor=(elm.checked)?'#fff':'#ddd';
      }
    }
  }else{
    if(!elm.form.LevCheckbox.checked){
      elm.form.elements["Lev"+elm.name].value = elm.value
    }
  }
}
</script>
                    <form name="Oplysninger" action="redirect.asp" method="post">
                        <table align="center">
                            <tr>
                                <td>&nbsp;</td>
                                <td class="h4" bgcolor="#333333">&nbsp;Køber&nbsp;</td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td align="right">
                                &nbsp;<input type="checkbox" name="LevCheckbox" onclick="changeVal(this);">
                                </td>
                                <td class="h4" style="background:#333333;color:white;">&nbsp;&lt; Klik for anden leveringsadresse&nbsp;</td>
                            </tr>
                            <tr>
                                <td>Navn:</td>
                                <td><input type="text" name="Name" id="navn" size="30" onchange="changeVal(this);"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Navn:</td>
                                <td><input type="text" name="LevName" id="Levnavn" size="30" disabled="disabled" style="background:#ddd"></td>
                            </tr>
                            <tr>
                                <td>Adresse:</td>
                                <td><input type="text" name="Address" size="30" onchange="changeVal(this);"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Adresse:</td>
                                <td><input type="text" name="LevAddress" size="30" disabled="disabled" style="background:#ddd"></td>
                            </tr>
                            <tr>
                                <td>Postnummer:</td>
                                <td><input type="text" name="ZipCode" size="2" maxlength="4" onchange="changeVal(this);"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Postnummer:</td>
                                <td><input type="text" name="LevZipCode" size="2" maxlength="4" disabled="disabled" style="background:#ddd"></td>
                            </tr>
                            <tr>
                                <td>By:</td>
                                <td><input type="text" name="City" size="30" onchange="changeVal(this);"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>By:</td>
                                <td><input type="text" name="LevCity" size="30" disabled="disabled" style="background:#ddd"></td>
                            </tr>
                            <tr>
                                <td>Telefon:</td>
                                <td><input type="text" name="Phone" size="30" onchange="changeVal(this);"></td>
                                <td>&nbsp;&nbsp;&nbsp;</td>
                                <td>Evt. Telefon:</td>
                                <td><input type="text" name="LevPhone" size="30" disabled="disabled" style="background:#ddd"></td>
                            </tr>
                            <tr>
                                <td>E-mail:</td>
                                <td><input type="text" name="Email" size="30"></td>
                            </tr>
                            <tr>
                                <td>&nbsp;</td>
                                <td><input type="Submit" value="Kun til intern testbrug"></td>
                            </tr>
                        </table>
                    </form>
Avatar billede mecenor Nybegynder
10. juli 2004 - 18:37 #9
Super lækkert arbejde, Roenving!
Og mange tak til TheSurfers opmærksomhed, når jeg nu ikke selv kunne følge med :)

Er der mulighed for at få fokus sat i første navnefelt? Tidl. gjorde jeg det med:
    <script language="VBScript">
    Sub Window_onLoad
    window.document.all.navn.focus
    End Sub
    </script>
Men det lege ikke så pænt med javascriptet.

Takker, Roenving, smid et svar.
Avatar billede thesurfer Nybegynder
10. juli 2004 - 18:39 #10
Prøv med:
<body onload="document.Oplysninger.navn.focus()">

ellet også er det setfocus().. blander dem altid sammen :-)
Avatar billede mecenor Nybegynder
10. juli 2004 - 19:15 #11
det var .focus(), tak thesurfer
Avatar billede mecenor Nybegynder
10. juli 2004 - 20:13 #12
...nu vil jeg ikke misbruge jeres hjælpsomhed, men hvordan ser jeg fra redirect siden om LevCheckbox er checked?
Avatar billede thesurfer Nybegynder
10. juli 2004 - 20:16 #13
det kommer vel an på (serverside) sproget..?
Avatar billede mecenor Nybegynder
10. juli 2004 - 20:21 #14
Jep, tænkte jeg ikke på - er ret ny indenfor det her. Det er ASP, så vi er nok ikke i den rette afdeling mere...
Avatar billede thesurfer Nybegynder
10. juli 2004 - 20:29 #15
Der er heldigvis en ASP kategori :-)

http://www.eksperten.dk/spm/Programmering/Script/ASP/
Avatar billede mecenor Nybegynder
10. juli 2004 - 20:37 #16
Tjek, hopper derover.
Avatar billede mecenor Nybegynder
10. juli 2004 - 20:59 #17
Fandt selv ud af det ved at kigge mine forgæves checkbox-forsøg igennem(hvis nogen skulle få brug for det, så virker: if request.Form("LevCheckbox")="on" then).
Tak for hjælpen begge: roenving, smid et svar.
Og jeg opretter gerne et spg til dig, thesurfer, med point som tak for ekstra-hjælpen - bar sig til... :)

Mvh. Mec
Avatar billede thesurfer Nybegynder
10. juli 2004 - 21:03 #18
Nej tak :-)

Jeg stødte faktisk på "on", da jeg prøvede en "alert(this.value)" (hvor "this" henviste til en checkbox) i JavaScript.

Hvis det var, skulle jeg bare smide et svar, sammen med roenving.. du kan så fordele pointsne.. enten ligeligt (marker begge navne i boksen, og acceptere) eller selv vælge hvordan (via linket i bunden af siden)..
Avatar billede mecenor Nybegynder
10. juli 2004 - 21:08 #19
Ok - vidste jeg ikke, takker.
Avatar billede roenving Novice
11. juli 2004 - 12:02 #20
Jamen så velbekomme '-)
Avatar billede roenving Novice
11. juli 2004 - 14:35 #21
-- og tak for point ;~}
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