Avatar billede nemlig Professor
15. marts 2010 - 15:22 Der er 24 kommentarer og
2 løsninger

Ved klik i checkbox sættes dagsdato i inputfelt

Hejsa.
Mon en venlig sjæl kan hjælpe mig med denne udfodring.

Jeg 2 checkbokse og ét inputfelt til hver af de 2 checkbokse.
Jeg vil gerne, at når der sættes et hak i checkboks1, så skrives dagsdato i intputfelt1 og tilsvarende ved checkboks2/inputfelt2.
Datoformattet skal gerne stå sådan her: dd-mm-åååå

<input type="checkbox1" name="tjek1" value="1">
<input type="text" name="dato1">
<input type="checkbox2" name="tjek2" value="1">
<input type="text" name="dato2">

Jeg skriver iøvrigt i PHP
Avatar billede majbom Novice
15. marts 2010 - 15:55 #1

<script type="text/javascript">
  function setDate(sender, element)
      if(sender.checked){
        var today = new Date();
        var newValue = today.getDate() + '-' + today.getMonth() + '-' + today.getFullYear();
        document.getElementById(element).value= newValue;
    }
  }
</script>
...
<input type="checkbox1" name="tjek1" value="1" onchange="setDate(this, 'dato1')">


sådan måske...
Avatar billede nemlig Professor
15. marts 2010 - 16:11 #2
Hej og tak for bidraget.
Men det virker desværre ikke.
Er det korrekt, at der ikke skal ændres i koden til input-feltet, dato1?
Avatar billede Slettet bruger
15. marts 2010 - 16:18 #3
Splazz's kode burde virke, hvis altså dit første tekstfelt har id-værdien 'dato1', dog ikke selv prøvet koden af.
Avatar billede nemlig Professor
15. marts 2010 - 16:25 #4
Tekstfeltet havde ikke id sat, men efter jeg har sat id='dato1' har det ikke hjulpet.
Kan det hænge sammen med, at jeg i samme tekstfelt har noget onfocus() og onblur()kode (alene styring af baggrundsfarven).
Avatar billede Slettet bruger
15. marts 2010 - 16:46 #5
onfocus og onblur<input type="text" id="dato1"> burde ikke betyde noget da det er din <input type="checkbox" onchange="setDate(this, 'dato1')"> som trigger setDate()-funktionen.
Men hvis du kan se om der kommer en fejlmeddelelse så kunne det måske forklarer hvad der går galt.
Avatar billede nemlig Professor
15. marts 2010 - 17:30 #6
OK - så fandt jeg fejlen. Ret elementær, men jeg har åbenbart stirret mig blind på den.
Der manglede en tuborg-start i 1. linje i functionen.

Men det virker ikke helt efter hensigten endnu.

1. Datoen sættes først, når man forlader feltet
2. Og datoen vises ikke i formatet dd-mm-åååå - fx, så står dags dato sådan her: 15-3-2010. Det skal gerne være 15-03-2010.
Avatar billede Slettet bruger
15. marts 2010 - 18:56 #7
Jeg forstår ikke hvad du mener med "Datoen sættes først, når man forlader feltet", men hvad datoen angår så vil dagene og månederne altid stå med så få cifre som muligt, dvs. ingen 0'ere
Det kan du dog tilgengæld rette ved at tjekke om dagen og måneden er under 10, hvis den er det så sætter du et 0 ind foran... eksempel:
var day = (today.getDate() < 10) ? "0"+today.getDate() : today.getDate();
// Og det samme gøres med måneden
Avatar billede nemlig Professor
15. marts 2010 - 19:10 #8
Jeg vil gerne at det virker på den måde, at idet jeg klikker i checkboxen, så skrives d.d. i textfeltet.
Men datoen skrives ikke når jeg klikker i checkboxen, men først når jeg efterfølgende klikker et andet sted på min side.

Tak for dit bidrag, men jeg er desværre ikke hjemme i javascript. Jeg kan ikke få det til at virke sammen med functionen.
Avatar billede Slettet bruger
15. marts 2010 - 19:36 #9
Jeg prøvede at lave en test både med onchange og onclick der skulle indsætte noget tekst i et tekstfelt - begge indsatte teksten så snart jeg afmærkede checkboksen, så jeg ville mene den kode der er angivet burde virke... men prøv giv os noget kode vi kan se på.
Avatar billede nemlig Professor
15. marts 2010 - 20:07 #10
Sådan her ser den forenklede kode ud, og datoen overføres først, når der klikkes på noget andet:

Men ved onclick, virker det korrekt.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da" lang="da">
<head><title>Kalender</title>
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />

<script type="text/javascript">
  function setDate(sender, element) {
      if(sender.checked){
        var today = new Date();
        var newValue = today.getDate() + '-' + today.getMonth() + '-' + today.getFullYear();
        document.getElementById(element).value= newValue;
    }
  }
</script>
</head>
<body>
    <input type="checkbox" name="tjek1" value="1" onchange="setDate(this, 'dato1')" /><br />
    <input type='text' id='dato1' name='dato1' value='' /><br />
    <input type='checkbox' name='tjek2' value='1' onchange="setDate(this, 'dato2')" /><br />
    <input type='text' id='dato2' name='dato2' value='' />
</body>
</html>
Avatar billede majbom Novice
15. marts 2010 - 20:45 #11
prøv med onclick i stedet for onchange...
Avatar billede majbom Novice
15. marts 2010 - 20:45 #12
okay, havde ikke set at du selv havde skrevet onclick... :)
Avatar billede nemlig Professor
15. marts 2010 - 20:52 #13
Jeg har det sådan set til at virke. Jeg mangler kun at få foranstillede nuller i dato og måned.
Kan I også hjælpe med det.
I #7 var der et forslag, men jeg kan ikke få det til at virke.
Avatar billede nemlig Professor
15. marts 2010 - 21:32 #14
Og så har jeg lige opdaget at det ikke er d.d., der returneres, men derimode d. 15-2-2010 (altså 1 måned gammel).
Avatar billede majbom Novice
15. marts 2010 - 21:32 #15
#7's forslag burde virke, hvordan bruger du det?
Avatar billede nemlig Professor
15. marts 2010 - 21:41 #16
Jeg skal vel integrere det i din kode - jeg har prøvet sådan her:


<script type="text/javascript">
  function setDate(sender, element)
      if(sender.checked){
        var today = new Date();
var day = (today.getDate() < 10) ? "0"+today.getDate() : today.getDate();
        var newValue = day() + '-' + today.getMonth() + '-' + today.getFullYear();
        document.getElementById(element).value= newValue;
    }
  }
</script>
Avatar billede majbom Novice
15. marts 2010 - 22:18 #17
der skal ikke () efter "day" i linjen

var newValue = day() + '-' + today.getMonth() + '-' + today.getFullYear();

da det er en variabel og ikke en funktion...
Avatar billede nemlig Professor
15. marts 2010 - 22:33 #18
Har du et bud på, hvorfor den henter d. 15-2-2010 og ikke 15-3-2010?
Avatar billede nemlig Professor
15. marts 2010 - 22:38 #19
Nu ser koden sådan herud, og jeg tror det virker med foranstillede nuller i både dato og måned.

Men hvorfor hulen henter den februar måned og ikke marts?

  function setDate(sender, element) {
      if(sender.checked){
        var today = new Date();
        var day = (today.getDate() < 10) ? "0"+today.getDate() : today.getDate();
        var month = (today.getMonth() < 10) ? "0"+today.getMonth() : today.getMonth();
        var newValue = day + '-' + month + '-' + today.getFullYear();
        document.getElementById(element).value= newValue;
    }
  }
Avatar billede Slettet bruger
15. marts 2010 - 23:57 #20
Quote fra Date-class @ W3Schools.com:
getMonth() - Returns the month (from 0-11)

Så månede 0 = januar,.., 11 = december.

Så hvis du ligger 1 til today.getMonth() så skulle måneden gerne stå rigtigt.
Avatar billede nemlig Professor
16. marts 2010 - 21:59 #21
Undskyld min manglende viden på javascript.
Men at tillægge 1 til måned driller mig også.
Man kan åbenbart ikke gøre sådan her:

var month = (today.getMonth() < 10) ? "0"+today.getMonth()+1  : today.getMonth()+1;
Avatar billede Slettet bruger
16. marts 2010 - 22:38 #22
Prøv følgende:

var month = today.getMonth() + 1;
if(month < 10) month = "0" + month;
Avatar billede nemlig Professor
16. marts 2010 - 22:53 #23
Jubii - så lykkedes det endeligt.
Tak for bidragene begge 2 - sender I lige et svar, så deler jeg pointene mellem jer.
Tusind tak for tålmodigheden og hjælpen.
Avatar billede Slettet bruger
17. marts 2010 - 00:42 #24
Du får et svar her
Avatar billede majbom Novice
17. marts 2010 - 08:06 #25
selv tak :)
Avatar billede majbom Novice
17. marts 2010 - 08:25 #26
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