Avatar billede dmg Nybegynder
28. marts 2007 - 11:20 Der er 14 kommentarer og
1 løsning

slut dato må ikke være før start dato

Hej JS experts!

Jeg skal bruge et script der kan tjekke om slut datoen kommer før start datoen. Mit timestamp ser således ud: 03-27-2007 23:20.

Jeg har prøvet mig lidt frem, men kan ikke få det til at virke... Jeg gætter på timestampet skal se anderledes ud... Håber i kan hjælpe!

function CompareDates(form)
{
    var startDate = form.elements['StartDate'].value;
    var dueDate = form.elements['DueDate'].value;
   
    if (startDate > dueDate)
    {
        alert("Start Date cannot be after Due Date!")
        return false;
    }

}
Avatar billede roenving Novice
28. marts 2007 - 11:33 #1
Det simpleste er, at du har det på væsentlighedsform: ååååmmddttmmss !-)

-- ellers skal man over i Date-objekter ...
Avatar billede dmg Nybegynder
28. marts 2007 - 11:48 #2
ehhh... jeg er ikke så kvik til java... Ved du hvordan man laver sådan en streng udfra mit format og kan du give et eksempel?
Avatar billede roenving Novice
28. marts 2007 - 12:07 #3
Laver du ikke selv datoen (serverside ?-)

-- for så vil jeg bare lave det, så det virker !-)

-- men du kan da også parse kalorius, så det dur:

function uniformDate(dato){
  dato = dato.split(/[- :]/);
  return dato[2] + dato[0] + dato[1] + dato[3] + dato[4];
}
function CompareDates(form){
    var startDate = uniformDate(form.elements['StartDate'].value);
    var dueDate = uniformDate(form.elements['DueDate'].value);
    if (startDate > dueDate){
        alert("Start Date cannot be after Due Date!")
        return false;
    }
}

-- måske skal der valideres en anelse, så der ikke kommer fejl, hvis der også er en tid !-)
Avatar billede roenving Novice
28. marts 2007 - 12:07 #4
, hvis der _ikke_ også er en tid !-)
Avatar billede dmg Nybegynder
28. marts 2007 - 12:27 #5
Genialt!!! Det virker bare 100%... Smid et svar... Har kæmpet med det skidt i lang tid nu... Thanks again!
Avatar billede roenving Novice
28. marts 2007 - 12:38 #6
Velbekomme '-)
Avatar billede dmg Nybegynder
28. marts 2007 - 12:46 #7
Here's the points ;)

Måske kan jeg lige hurtigt spørge om en lille ting...

hvis nu jeg vil lave en if statement, der lige tjekker om start datoen er før dags dato, så ville jeg da tro at nedenstående virkede?

var today = new Date();
   
    if (startDate > today)
    {
        alert("Start date cannot be before todays date: today")
        return false;
    }
Avatar billede roenving Novice
28. marts 2007 - 12:57 #8
Nej, der skal du også hente dem ud:

    if (startDate > today.getFullYear() + twoDigits(today.getMonth()+1) + twoDigits(today.getDate()) + twoDigits(today.getHours()) + twoDigits(today.etMinutes()))
    {
        alert("Start date cannot be before todays date: today")
        return false;
    }

-- og twoDigits-funktionen:

function twoDigits(num){
  return num<10 ? "0" + num : "" + num;
}
Avatar billede roenving Novice
28. marts 2007 - 13:01 #9
-- og måske med alerten, og et læsbart format også:

var today = new Date();
var showTimestamp = today.getFullYear() +"-"+ twoDigits(today.getMonth()+1) +"-"+ twoDigits(today.getDate()) +" "+ twoDigits(today.getHours()) +":"+ twoDigits(today.getMinutes())
today = today.getFullYear() + twoDigits(today.getMonth()+1) + twoDigits(today.getDate()) + twoDigits(today.getHours()) + twoDigits(today.getMinutes());

    if (uniformDate(startDate) > today)
    {
        alert("Start date cannot be before todays date: "+showTimestamp)
        return false;
    }
Avatar billede roenving Novice
28. marts 2007 - 13:02 #10
-- og jeg fik lige fanget en tavetosse ...
Avatar billede dmg Nybegynder
28. marts 2007 - 21:37 #11
Hej Roenving,

Meget imponerende kode du har sammensat. Det virker desværre ik, her kan du se hele min kode... Jeg kan os oprette et nyt spørgsmål så du kan få ekstra points for alt det her. Indtil videre mange tak for hjælpen.

function twoDigits(num)
{
  return num<10 ? "0" + num : "" + num;
}

function uniformDate(dato)
{
  dato = dato.split(/[- :]/);
  return dato[2] + dato[0] + dato[1] + dato[3] + dato[4];
}
function CompareTwoDates(form)
{
    var startDate = uniformDate(form.elements['StartDate'].value);
    var dueDate = uniformDate(form.elements['DueDate'].value);
     
    var today = new Date();
    var showTimestamp = today.getFullYear() +"-"+ twoDigits(today.getMonth()+1) +"-"+ twoDigits(today.getDate()) +" "+ twoDigits(today.getHours()) +":"+ twoDigits(today.getMinutes())
    today = today.getFullYear() + twoDigits(today.getMonth()+1) + twoDigits(today.getDate()) + twoDigits(today.getHours()) + twoDigits(today.getMinutes());

    if (startDate > today)
    {
        alert("Start date cannot be before todays date: "+showTimestamp)
        return false;
    }
   
    if (startDate > dueDate)
    {
        alert("Due date cannot be before start date")
        return false;
    }
}
Avatar billede dmg Nybegynder
28. marts 2007 - 21:50 #12
hej igen... tror måske det er mig der laver en fejl...
Avatar billede roenving Novice
29. marts 2007 - 14:02 #13
Måske kan du lave et eksempel på et færdigt dokument, du kan linke til ?-)
Avatar billede dmg Nybegynder
06. april 2007 - 05:20 #14
hej igen... Det virkede bare perfect... det var sku mig der kiksede rundt... Mange tak for det ekstra arbejde ;)
Avatar billede roenving Novice
06. april 2007 - 11:02 #15
OK, 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