Avatar billede hundevennen Nybegynder
08. marts 2007 - 20:00 Der er 28 kommentarer og
1 løsning

formularhjælp? dato til antal år

kan man efter indtastning af en dato i en html formular få den til selv at udfylde næste formularfelt med antal år beregnet udfra datoen i datofeltet
Avatar billede roenving Novice
08. marts 2007 - 20:10 #1
Tjah, hvad mener du ?-)

-- er det et aldersscript, du skal bruge ...

-- det skal gøres _meget_ omhyggeligt, hvis det skal virke ordentligt, men man kan jo nøjes med at kigge på årstallet, så er det ret simpelt !-)
Avatar billede hundevennen Nybegynder
08. marts 2007 - 22:11 #2
det er en indtastningsformular der skal inserte i en accessbase og for at man ikke skal sidde og regne alderen ud i hovedet
Avatar billede hundevennen Nybegynder
08. marts 2007 - 22:16 #3
hovsa! - nå man taster en fødselsdato eller cprnr ind i en inputbox og vupti bliver næste indputbox fyldt ud med alder ueregnet ud fra fødseldato eller cpr
Avatar billede hundevennen Nybegynder
08. marts 2007 - 22:17 #4
hovsa! - nå man taster en fødselsdato eller cprnr ind i en inputbox og vupti bliver næste indputbox fyldt ud med alder ueregnet ud fra fødseldato eller cpr - ydermere skal formularen være webbaseret altså en asp løsning - men det kan jeg godt finde ud af - det er kun det med alderen
Avatar billede roenving Novice
08. marts 2007 - 22:34 #5
F.eks.

<script type="text/javascript">
function beregnAlder(elm){
  var dato = elm.value;
  if(!dato.match(/^(\d\d-){2}\d{4}$/)){
    alert("Datoen skal angives i formatet dd-mm-åååå");
    elm.focus();
    return;
  }
  dato = dato.split("-");
  var d = new Date(dato[2],dato[1]-1,dato[0]);
  if(d.getFullYear() != dato[2] || d.getMonth()+1 != dato[1] || d.getDate() != dato[0]){
    alert("Datoen er ugyldig");
    elm.focus();
    return;
  }
  var today = new Date();
  var alder = today.getFullYear() - d.getFullYear();
  if(d.getMonth() > today.getMonth() || d.getMonth() == today.getMonth() && d.getDate() > today.getDate())
    alder--;
  elm.form.Alder.value = alder;
}
</script>

Fødselsdato (dd-mm-åååå): <input ... onchange="beregnAlder(this);"><br>
Alder: <input name="Alder">
Avatar billede roenving Novice
08. marts 2007 - 22:37 #6
Hov, den bliver noget rarere, hvis man:

onchange="return beregnAlder(this);"

-- og ikke return alene, men:

...
    elm.focus();
    return false;
  }
...
Avatar billede hundevennen Nybegynder
09. marts 2007 - 09:09 #7
har forsøgt men den skriver ikke alderen - dette er onchange="return beregnAlder(this);"

-- og ikke return alene, men:

...
    elm.focus();
    return false;
  }
hvor skal det sættes ind?
Avatar billede hundevennen Nybegynder
09. marts 2007 - 09:11 #8
JEG HAR FORSØGT SÅDAN HER - MEN DET DUER IKKE??
<script type="text/javascript">
function beregnAlder(elm){
  var dato = elm.value;
  if(!dato.match(/^(\d\d-){2}\d{4}$/)){
    alert("Datoen skal angives i formatet dd-mm-åååå");
    elm.focus();
    return FALSE;
  }
  dato = dato.split("-");
  var d = new Date(dato[2],dato[1]-1,dato[0]);
  if(d.getFullYear() != dato[2] || d.getMonth()+1 != dato[1] || d.getDate() != dato[0]){
    alert("Datoen er ugyldig");
    elm.focus();
    return FALSE;
  }
  var today = new Date();
  var alder = today.getFullYear() - d.getFullYear();
  if(d.getMonth() > today.getMonth() || d.getMonth() == today.getMonth() && d.getDate() > today.getDate())
    alder--;
  elm.form.Alder.value = alder;
}
</script>

Fødselsdato (dd-mm-åååå): <input ... onchange="return beregnAlder(this);"
br>
Alder: <input name="Alder">
Avatar billede roenving Novice
09. marts 2007 - 09:13 #9
-- du skal selvfølgelig have en form rundt om felterne !-)
Avatar billede hundevennen Nybegynder
09. marts 2007 - 09:50 #10
roenving - jeg undskylder - det første man bliver blind på er øjnene - det virker perfekt, - tak ska du ha.
jeg ved ikke om du kan hjælpe mig her eller jeg skal oprette et nyt spm, - men kan man lave det samme hvor det er et cpr nummer istedet for en fødselsdato?
jeg laver gerne et nyt spm eller forhøjer dine point.
Avatar billede roenving Novice
09. marts 2007 - 10:01 #11
Det kan man sagtens, men er det virkelig sådan, at du beder folk indtaste cpr-nummer på en hjemmeside ?-)

-- det vil jeg nærmest opfatte som en forbrydelse, medmindre det er en officiel hjemmeside med tilmelding til et offentligt projekt (uddannelse e.l. !-)
Avatar billede hundevennen Nybegynder
09. marts 2007 - 10:32 #12
det er et lukket intranet
Avatar billede roenving Novice
09. marts 2007 - 10:51 #13
I stedet for dette, skal du så:

function beregnAlder(elm){
  var dato = elm.value;
  if(!dato.match(/^(\d\d-){2}\d{4}$/)){
    alert("Datoen skal angives i formatet dd-mm-åååå");
    elm.focus();
    return false;
  }
  dato = dato.split("-");
...

function beregnAlder(elm){
  var dato = elm.value;
  if(!dato.match(/^\d{6}-\d{4}$/)){
    alert("CPR-nummer skal angives i formatet ddmmåå-llll");
    elm.focus();
    return FALSE;
  }
  dArray = dato.split("-")[0].split("");
  dato = [dato[0]+dato[1], dato[2]+dato[3], dato[4]+dato[5]];
Avatar billede roenving Novice
09. marts 2007 - 10:52 #14
Hrm, hvor gamle er dine brugere, for så skal der jo checkes på århundrede ...
Avatar billede hundevennen Nybegynder
09. marts 2007 - 11:10 #15
mellem 10 og 70
Avatar billede roenving Novice
09. marts 2007 - 11:23 #16
Så:

  dato = [dato[0]+dato[1], dato[2]+dato[3], +(dato[4]+dato[5])+1900];
Avatar billede roenving Novice
09. marts 2007 - 11:25 #17
Hov, det skal jo være dArray og ikke dato:

dato = [dArray[0]+dArray[1], dArray[2]+dArray[3], +(dArray[4]+dArray[5])+1900];
Avatar billede hundevennen Nybegynder
09. marts 2007 - 11:35 #18
Hej så ser det sådan ud, men der opstår en fejl på siden?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>

<body>
<script type="text/javascript">

function beregnAlder(elm){
  var dato = elm.value;
  if(!dato.match(/^\d{6}-\d{4}$/)){
    alert("CPR-nummer skal angives i formatet ddmmåå-llll");
    elm.focus();
    return FALSE;
  }
  dArray = dato.split("-")[0].split("");
  dato = [dArray[0]+dArray[1], dArray[2]+dArray[3], +(dArray[4]+dArray[5])+1900];
 
 
 
 
 
</script>
<form  name="sampleform" action="Opretap.asp" method=post>
Cpr(ddmmåå-llll): <input name="cpr" onchange="return beregnAlder(this)"><br>
Alder: <input name="Alder">

</form>
</body>
</html>
Avatar billede mcgoat Nybegynder
09. marts 2007 - 11:37 #19
mangler en "var" foran dArray?
Avatar billede roenving Novice
09. marts 2007 - 11:53 #20
-- du skal jo også have resten af scriptet med ...
Avatar billede hundevennen Nybegynder
09. marts 2007 - 12:35 #21
hmm - har prøvet sådan her??virker heller ikke
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>

<body>
<script type="text/javascript">

function beregnAlder(elm){
  var dato = elm.value;
  if(!dato.match(/^\d{6}-\d{4}$/)){
    alert("CPR-nummer skal angives i formatet ddmmåå-llll");
    elm.focus();
    return FALSE;
  }
  dArray = dato.split("-")[0].split("");
  dato = [dArray[0]+dArray[1], dArray[2]+dArray[3], +(dArray[4]+dArray[5])+1900];
  }
  dato = dato.split("-");
  var d = new Date(dato[2],dato[1]-1,dato[0]);
  if(d.getFullYear() != dato[2] || d.getMonth()+1 != dato[1] || d.getDate() != dato[0]){
    alert("Datoen er ugyldig");
    elm.focus();
    return false;
  }
  var today = new Date();
  var alder = today.getFullYear() - d.getFullYear();
  if(d.getMonth() > today.getMonth() || d.getMonth() == today.getMonth() && d.getDate() > today.getDate())
    alder--;
  elm.form.Alder.value = alder;
}
 
 
 
 
</script>
<form  name="sampleform" action="Opretap.asp" method=post>
Cpr(ddmmåå-llll): <input name="cpr" onchange="return beregnAlder(this)"><br>
Alder: <input name="Alder">

</form>
</body>
</html>
Avatar billede roenving Novice
09. marts 2007 - 12:54 #22
Du har glemt at slette nogle linjer:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Untitled</title>
</head>

<body>
<script type="text/javascript">
function beregnAlder(elm){
  var dato = elm.value;
  if(!dato.match(/^\d{6}-\d{4}$/)){
    alert("CPR-nummer skal angives i formatet ddmmåå-llll");
    elm.focus();
    return false;
  }
  dArray = dato.split("-")[0].split("");
  dato = [dArray[0]+dArray[1], dArray[2]+dArray[3], +(dArray[4]+dArray[5])+1900];
  var d = new Date(dato[2],dato[1]-1,dato[0]);
  alert(d);
  if(d.getFullYear() != dato[2] || d.getMonth()+1 != dato[1] || d.getDate() != dato[0]){
    alert("Datoen er ugyldig");
    elm.focus();
    return false;
  }
  var today = new Date();
  var alder = today.getFullYear() - d.getFullYear();
  if(d.getMonth() > today.getMonth() || d.getMonth() == today.getMonth() && d.getDate() > today.getDate())
    alder--;
  elm.form.Alder.value = alder;
}
</script>
<form  name="sampleform" action="Opretap.asp" method=post>
Cpr(ddmmåå-llll): <input name="cpr" onchange="return beregnAlder(this)"><br>
Alder: <input name="Alder">

</form>
</body>
</html>
Avatar billede hundevennen Nybegynder
09. marts 2007 - 13:37 #23
roenving - nu er det hele perfekt bortset fra den alert(d), men den har jeg slettet
så kører det:-))
læg et svar og tusind tak for hjælpen
Avatar billede showsource Seniormester
09. marts 2007 - 13:41 #24
Hvad nu til næste år? Så er alderen den samme?
Avatar billede hundevennen Nybegynder
09. marts 2007 - 13:45 #25
showsource - hvorfor det?
Avatar billede roenving Novice
09. marts 2007 - 13:47 #26
Velbekomme '-)

-- nå, ja, jeg skulle lige debugge ...

>>showsource
Da der dannes en spritnyt Date-objekt med den aktuelle tid på klienten, vil der ændres dato ca. en gang hver 24. time !-)
Avatar billede hundevennen Nybegynder
09. marts 2007 - 13:47 #27
jeg har prøvet at sætte maskindato til 2008 og det bliver regnet rigtig ud ?-)
Avatar billede roenving Novice
09. marts 2007 - 13:56 #28
Det vil det også altid, det eneste rigtig store problem, er de mennesker, der ikke har en ordentlig maskindato, men det bør du alligevel validere serverside, så det er ikke noget alvorligt problem !-)

-- og tak for point ;~}
Avatar billede showsource Seniormester
09. marts 2007 - 13:56 #29
"udfylde næste formularfelt" ja, mig som ikke ser mig for!
( troede året skulle gememes i DB )
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
Kurser inden for grundlæggende programmering

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