Avatar billede compac Seniormester
30. marts 2007 - 18:19 Der er 14 kommentarer og
1 løsning

Datokontrol i javavscript

Jeg har 2 inputfelter til indtastning af datoer i html.
Jeg kunne tænke mig at validere, hvilken dato der er størst, således, at der kommer en alert-box der siger "at dato1 skal være større end dato2".
Kan det laves i javascript?
Mit input kommer fra et lille kalenderprogram der popper op, og hvor jeg vælger datoen fra til mit inputfelt. Den har formatet dd-mm-yyyy.
Avatar billede anri Novice
30. marts 2007 - 20:19 #1
Der er et objekt der hedder date, det kan du bruge..

var myDate=new Date()
myDate.setFullYear(2010,0,14)

Bemærk at januar måned hedder 0 og december hedder 11..    Det jeg ville gøre var at splitte strængen op med .split() og lægge værdierne ind i et dato objekt..

Du kan så sammenligne dem med > og <
Avatar billede roenving Novice
30. marts 2007 - 23:08 #2
-- bortset fra at man ikke kan sætte årstal med flere parametre end årstallet har anri helt rigtigt fat i tingen !-)
Avatar billede compac Seniormester
02. april 2007 - 23:01 #3
Vil I give mig et eksempel?
Avatar billede roenving Novice
03. april 2007 - 00:06 #4
Hvis dine datoer har et format, hvor det vigtigste står først kan du ammenligne direkte, og ellers kan du bare lave det om:

dato1 = "20070213";
dato2 = "20070115";
if(dato1>dato2)
  alert("dato2 skal være større end dato1 !-)";
Avatar billede compac Seniormester
03. april 2007 - 21:14 #5
Når datoen står i inputfelterne har den formatet dd-mm-yyyy. - ellers er det lige hvad jeg skal bruge.
Jeg skal vel bruge noget der ligner "split-funktionen" fra php?
Men jeg ved ikke, om det er den, du henviser til i din kommentar til anri?.
Avatar billede roenving Novice
03. april 2007 - 22:13 #6
Jo, egentlig, men du kan også behandle det som en simpel streng-ting:

dato1 = "13-02-2007";
dato2 = "15-01-2007";
dato1 = dato1.split("-");
dato2 = dato2.split("-");
dato1 = dato1[2]+dato1[1]+dato1[0];
dato2 = dato2[2]+dato2[1]+dato2[0];
if(dato1>dato2)
  alert("dato2 skal være større end dato1 !-)";
Avatar billede compac Seniormester
04. april 2007 - 22:30 #7
Du sætter værdier på variablerne dato1 og dato2.
Mine variabler kommer jo fra inputfelter med disse navne.
Hvordan får jeg lagt dem ind i min scriptfunktion?
F.eks dato1=document.dato1;    --?  (virker ikke)
Avatar billede compac Seniormester
05. april 2007 - 21:27 #8
Mit eget forslag ser sådan ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Branch</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function tjek() {
dato1 = document.test.felt1.value;
dato2 = document.test.felt2.value;
dato1 = dato1.split("-");
dato2 = dato2.split("-");
dato1 = dato1[2]+dato1[1]+dato1[0];
dato2 = dato2[2]+dato2[1]+dato2[0];
if(dato1>dato2)
  alert("dato2 skal være større end dato1 !-)";
</script>
</head>
<body>
<form name="test" onSubmit="tjek()">
<input name="felet1" type="text">
<input name="felt2" type="text">
<input name="send" type="submit">
</form>
</body>
</html>

-men jeg kan ikke gennemskue,hvor fejlen ligger.
Avatar billede roenving Novice
05. april 2007 - 23:24 #9
F.eks.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Branch</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function tjek(f) {
var dato1 = f.dato1.value.split("-");
var dato2 = f.dato2.value.split("-");
dato1 = dato1[2]+dato1[1]+dato1[0];
dato2 = dato2[2]+dato2[1]+dato2[0];
if(dato1>dato2){
  alert("Slutdato skal være større end startdato !-)";
  return false;
}
return true;
</script>
</head>
<body>
<form name="test" onSubmit="return tjek(this)">
Indtast datoer i formatet dd-mm-åååå<br>
Startdato: <input name="dato1" type="text"><br>
Slutdato: <input name="dato2" type="text"><br>
<input name="send" type="submit">
</form>
</body>
</html>
Avatar billede roenving Novice
05. april 2007 - 23:25 #10
-- men validering af datoformatet ville jeg jo nok anbefale !-)
Avatar billede compac Seniormester
06. april 2007 - 20:28 #11
Jeg kan ikke få det til at virke. Jeg vil prøve at følge min indtastning i javascript-sektionen. Hvordan gør jeg det? f.eks. f.write.(dato1); --?
Avatar billede roenving Novice
07. april 2007 - 00:15 #12
Prøv at alerte, for det er muligheden for at debugge i javascript !-)
Avatar billede compac Seniormester
07. april 2007 - 15:13 #13
Da jeg fik sat citationstegnet rigtigt i alert-sætningnen virkede det:
window.alert("Slutdato skal være større end startdato");

Du ledte mig på sporet - så læg et svar.
Avatar billede roenving Novice
07. april 2007 - 15:26 #14
*lol*

-- det må du zq undskylde, det er bare mine smileys, der nemt forvirrer ...

-- det jeg ville, var jo:

  alert("Slutdato skal være større end startdato !-)");

Velbekomme '-)
Avatar billede roenving Novice
13. april 2007 - 00:07 #15
-- 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