Avatar billede tblaster Nybegynder
10. december 2003 - 10:59 Der er 21 kommentarer og
1 løsning

Undersøge om start tid er mindre (tidliger) end slut tiden

Hejsa

Jeg skal have lidt hjælp til at undersøge 4 input felter. Det jeg skal undersøge for er om starttiden er mindre (tidliger) end slut tiden. Dette skal naturligvis undersøges i relation til start og slut datoen. Den skal altså kun melde fejl hvis sluttid og slut dato er på et tidliger tidspunkt end start tiden og start datoen. Det som jeg har er følgende:

Function Check_Tider_Dato(StartTid, SlutTid, StartDato, SlutDato, Besked)
    str = "if ____________
    str = str & "  alert(""" & Besked & """);" & VbCrLf
    str = str & "  document.SaveForm." & InputNavn & ".select();" & VbCrLf
    str = str & "  document.SaveForm." & InputNavn & ".focus();" & VbCrLf
    str = str & "  return false;" & VbCrLf
    str = str & "}" & VbCrLf
    Check_Tider_Dato = str
End function

Overstående funktion udkriver jeg således:
Response.write Check_Tider_Dato("StartTid", "SlutTid", "StartDato", "SlutDato", "Start og slut tiden stemmer ikke overens")

Hvordan undersøger jeg så lige det med javascript?
Avatar billede mm12010 Nybegynder
10. december 2003 - 11:17 #1
hvordan er dine datoer og tider formateret?
Avatar billede mm12010 Nybegynder
10. december 2003 - 11:30 #2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Undersøge om start tid er mindre (tidliger) end slut tiden</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
function Check_Tider_Dato(StartTid, SlutTid, StartDato, SlutDato){
    msg="Start og slut tiden stemmer ikke overens";
    fra=String(StartDato+" "+StartTid);
    til=String(SlutDato+" "+SlutTid);
    if(Date.parse(fra)>Date.parse(til)){
        alert(msg);
        return false;
        }
    return true;
    }
</script>
</head>
<body>
<div onClick="Check_Tider_Dato('11:31:14', '12:45:54', '21-12-2003', '25-12-2003');">Check_Tider_Dato('11:31:14', '12:45:54', '21-12-2003', '25-12-2003');</div><br><br>
<div onClick="Check_Tider_Dato('12:45:55', '12:45:54', '21-12-2003', '21-12-2003');">Check_Tider_Dato('12:45:55', '12:45:54', '21-12-2003', '21-12-2003');</div>
</body>
</html>
Avatar billede tblaster Nybegynder
10. december 2003 - 14:43 #3
Mine tider og datoer er formateret som følgende:
Tider: 08:12
Datoer: 10-12-03 eller 10-12-2003
Avatar billede mm12010 Nybegynder
10. december 2003 - 15:43 #4
er årstallet altid over 1999?
Avatar billede mm12010 Nybegynder
10. december 2003 - 15:51 #5
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Undersøge om start tid er mindre (tidliger) end slut tiden</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
function Check_Tider_Dato(StartTid, SlutTid, StartDato, SlutDato){
    msg="Start og slut tiden stemmer ikke overens";
    StartDato=StartDato.split("-");
    fra=StartDato[1]+"-"+StartDato[0]+"-"+((StartDato[2].length==4)?StartDato[2]:"20"+StartDato[2])+" "+StartTid;
    SlutDato=SlutDato.split("-");
    til=SlutDato[1]+"-"+SlutDato[0]+"-"+((SlutDato[2].length==4)?SlutDato[2]:"20"+SlutDato[2])+" "+SlutTid;
    if(Date.parse(fra)>Date.parse(til)){
        alert(msg);
        return false;
        }
    return true;
    }
</script>
</head>
<body>
<div onClick="Check_Tider_Dato('15:41', '12:45', '10-12-03', '25-11-2003');">Check_Tider_Dato('15:41', '12:45', '10-12-03', '25-11-2003');</div><br><br>
<div onClick="Check_Tider_Dato('12:45', '12:45', '21-12-2003', '21-12-03');">Check_Tider_Dato('12:45', '12:45', '21-12-2003', '21-12-03');</div>
</body>
</html>
Avatar billede tblaster Nybegynder
11. december 2003 - 08:50 #6
Det skulle altid være over 1999 men hvad sker der hvis der vælges årstal under 1999?
Avatar billede mm12010 Nybegynder
11. december 2003 - 08:52 #7
ikke noget hvis formatet er 1998, men hvis det er 98 bliver det lavet om til 2098... dette kan rettes hvis det er nødvendigt :o)
Avatar billede tblaster Nybegynder
11. december 2003 - 08:54 #8
Jeg må heller lige gøre dig opmærksom på at tiderne overføres fra et inputfelt:

Følgende er altså hvad jeg skriver i min asp kode:

Response.write Check_Tider_Dato("StartTid", "SlutTid", "StartDato", "SlutDato", "Start og slut tiden stemmer ikke overens")

Den tager så de værdier der er i inputfelterne:
StartTid
SlutTid
StartDato
SlutDato

Værdien af de enkelte felter skal altså hentes i funktionen vha følgende:
!document.SaveForm." & StartTid & ".value
!document.SaveForm." & SlutTid & ".value
!document.SaveForm." & StartDato & ".value
!document.SaveForm." & StartTid & ".value
Avatar billede tblaster Nybegynder
11. december 2003 - 08:56 #9
Ups ... de skal ikke have en ! foran :-D
Avatar billede mm12010 Nybegynder
11. december 2003 - 08:59 #10
du kan evt bruge roenving's "Input-masken -- accepterer kun gyldige datoer i formatet: dd-mm-åååå"

  http://roenving.users.whitehat.dk/WD3Input.html
Avatar billede tblaster Nybegynder
11. december 2003 - 09:01 #11
Det er ligemeget. Datoerne vil såvidt jeg lige kan gennemskue altid være 2002 eller derover!

Jeg har prøvet at samle dine ting i en sådan funktion som jeg skal have, men da jeg prøvede at køre din funktion meldte den ikke fejl ved ikke stemmende dateoer. Kan du se om jeg har lavet noget forkert:

Function Check_Tider_Dato(StartTid, SlutTid, StartDato, SlutDato, Besked)
   
    str =  "StartDato = document.SaveForm." & StartDato & ".value.split(""-"");"
    str = str & "fra = StartDato[1]+""-""+StartDato[0]+""-""+((StartDato[2].length==4)?StartDato[2]:""20""+StartDato[2])+"" ""+document.SaveForm." & StartTid & ".value;"
    str = str & "SlutDato = document.SaveForm." & SlutDato & ".value.split("-");"
    str = str & "til = SlutDato[1]+""-""+SlutDato[0]+""-""+((SlutDato[2].length==4)?SlutDato[2]:""20""+SlutDato[2])+"" ""+document.SaveForm." & SlutTid & ".value;"
    str = str & "if(Date.parse(fra)>Date.parse(til)){"
    str = str & "  alert(""" & Besked & """);" & VbCrLf
    str = str & "  document.SaveForm." & InputNavn & ".select();" & VbCrLf
    str = str & "  document.SaveForm." & InputNavn & ".focus();" & VbCrLf
    str = str & "  return false; ;" & VbCrLf
    str = str & "}" & VbCrLf
    str = str & "}" & VbCrLf
   
    Check_Tider_Dato = str
End function
Avatar billede tblaster Nybegynder
11. december 2003 - 09:05 #12
Jeg fik lige lavet noget lort der. Har rettet det til følgende:

Function Check_Tider_Dato(StartTid, SlutTid, StartDato, SlutDato, Besked)
   
    str =  "StartDato = document.SaveForm." & StartDato & ".value.split(""-"");" & VbCrLf
    str = str & "fra = StartDato[1]+""-""+StartDato[0]+""-""+((StartDato[2].length==4)?StartDato[2]:""20""+StartDato[2])+"" ""+document.SaveForm." & StartTid & ".value;" & VbCrLf
    str = str & "SlutDato = document.SaveForm." & SlutDato & ".value.split(""-"");" & VbCrLf
    str = str & "til = SlutDato[1]+""-""+SlutDato[0]+""-""+((SlutDato[2].length==4)?SlutDato[2]:""20""+SlutDato[2])+"" ""+document.SaveForm." & SlutTid & ".value;" & VbCrLf
    str = str & "if(Date.parse(fra)>Date.parse(til)){" & VbCrLf
    str = str & "  alert(""" & Besked & """);" & VbCrLf
    str = str & "  document.SaveForm." & InputNavn & ".select();" & VbCrLf
    str = str & "  document.SaveForm." & InputNavn & ".focus();" & VbCrLf
    str = str & "  return false; ;" & VbCrLf
    str = str & "}" & VbCrLf
   
    Check_Tider_Dato = str
End function

Det udskrives som føglende:
StartDato = document.SaveForm.StartDato.value.split("-");
fra = StartDato[1]+"-"+StartDato[0]+"-"+((StartDato[2].length==4)?StartDato[2]:"20"+StartDato[2])+" "+document.SaveForm.StartTid.value;
SlutDato = document.SaveForm.SlutDato.value.split("-");
til = SlutDato[1]+"-"+SlutDato[0]+"-"+((SlutDato[2].length==4)?SlutDato[2]:"20"+SlutDato[2])+" "+document.SaveForm.SlutTid.value;
if(Date.parse(fra)>Date.parse(til)){
  alert("Start og slut tiden stemmer ikke overens");
  document.SaveForm..select();
  document.SaveForm..focus();
  return false; ;
}
Avatar billede mm12010 Nybegynder
11. december 2003 - 09:05 #13
lige hvad det er du prøver på kan jeg ikke se, men det er jo ASP<%@LANGUAGE="VBSCRIPT"%>
Avatar billede tblaster Nybegynder
11. december 2003 - 09:11 #14
Det jeg gør er at jeg laver en funktion som jeg kan kalde de steder i mine koder hvor jeg ønsker det. Jeg kalder den vha af de input felter som jeg skal undersøge altså:

Response.write Check_Tider_Dato("StartTid", "SlutTid", "StartDato", "SlutDato", "Start og slut tiden stemmer ikke overens")

Når siden så bliver åbnet af en bruger bliver funktionen udskrevet på siden med de rigtige inputfelter. Og bare rolig ... funktionen bliver udskrevet i et script felt som kaldes ved submit form.
Avatar billede tblaster Nybegynder
11. december 2003 - 09:12 #15
Et eksempel på en funktion som jeg har der undersøger for om værdien af et inputfelt er et tal er følgnede:

Function Check_Tal(InputNavn, Besked)
    dim str
    str =      "reg = /^[0-9]+$/" & VbCrLf
    str = str & "if(!document.SaveForm." & InputNavn & ".value.match(reg)){" & VbCrLf
    str = str & "  alert(""" & Besked & """);" & VbCrLf
    str = str & "  document.SaveForm." & InputNavn & ".select();" & VbCrLf
    str = str & "  document.SaveForm." & InputNavn & ".focus();" & VbCrLf
    str = str & "  return false; ;" & VbCrLf
    str = str & "}" & VbCrLf
    Check_Tal = str
End function

Det eneste jeg har gjort er at smide en javascript kode ind i en asp funktion som jeg kalder de steder hvor jeg har brug for det!
Avatar billede mm12010 Nybegynder
11. december 2003 - 09:18 #16
ok :o)

har du et link til siden?

har du prøvet udskrive dine værdier inden du kalder funktion, så du er sikker på formatet?
Avatar billede tblaster Nybegynder
11. december 2003 - 09:27 #17
Siden køre lokalt.

Jeg er sikker på at datoerner og tiderne er gyldige for det undersøger jeg for inden jeg laver det relationscheck. Så tiderne har du i formatet:
12:43
Og datoerne:
15-12-03 eller 15-12-2003
Avatar billede mm12010 Nybegynder
11. december 2003 - 09:38 #18
funktionen virker fint: http://uniquem.dk/exp/438148.htm
Avatar billede tblaster Nybegynder
11. december 2003 - 10:08 #19
Der kan jeg godt se at det virker fint ... men hvad er der så lige galt med min?

StartDato = document.SaveForm.StartDato.value.split("-");
fra = StartDato[1]+"-"+StartDato[0]+"-"+((StartDato[2].length==4)?StartDato[2]:"20"+StartDato[2])+" "+document.SaveForm.StartTid.value;
SlutDato = document.SaveForm.SlutDato.value.split("-");
til = SlutDato[1]+"-"+SlutDato[0]+"-"+((SlutDato[2].length==4)?SlutDato[2]:"20"+SlutDato[2])+" "+document.SaveForm.SlutTid.value;
if(Date.parse(fra)>Date.parse(til)){
  alert("Start og slut tiden stemmer ikke overens");
  document.SaveForm..select();
  document.SaveForm..focus();
  return false; ;
}
Avatar billede mm12010 Nybegynder
11. december 2003 - 10:20 #20
document.SaveForm.HER_MANGLER_NOGET.select();
  document.SaveForm.HER_MANGLER_NOGET.focus();

  return false; ; << der er en ; for meget
Avatar billede tblaster Nybegynder
11. december 2003 - 10:35 #21
Det er da lige det ... thx man!
Avatar billede mm12010 Nybegynder
11. december 2003 - 10:36 #22
selv tak :o)
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