Avatar billede misbruger Nybegynder
06. februar 2002 - 17:29 Der er 5 kommentarer og
1 løsning

omskriv dato og tid i funktion

Jeg skal bruge en funktion der, ved afkrydsning i checkboxen, tager den indtastet værdi i de øverste 3 input felter, og tillægger en tid på (hh:mm), og som derefter udskrives i de understående felter

<input type="text" name="startDate" value="dd.mm.yyyy">,
<input type="text" name="startHours" value="hh"> : <input type="text" name="startMinutes" value="mm">
<input type="checkbox" name="chooseTime" value="1">
<br><br>
<input type="text" name="slutDate" value="dd.mm.yyyy">,
<input type="text" name="slutHours" value="hh"> : <input type="text" name="slutMinutes" value="mm">

Hvis der ikke er indtastet dato eller tidspunkt i øverste felter, og checkboxen afkrydses...
- Skal der tages basis i now() + 2 timer
- Eller også skal brugeren promtes om udfyldning af øverste felter.
(Kom selv med det bedste bud)

Bud på honorar for løsning af opgaven ønskes!
Avatar billede Slettet bruger
06. februar 2002 - 17:50 #1
Mener du, at man i "chooseTime" skal kunne vælge, hvor mange timer, der skal lægges til startDate/Hours/Minutes?
Avatar billede Slettet bruger
06. februar 2002 - 17:56 #2
Sorry, jeg så ikke det var en checkbox!

Kigger på det...
Avatar billede Slettet bruger
06. februar 2002 - 18:38 #3
Her:

<html>
<head>
<script>
mill = 1000*60*60*24*2; //Tiden der skal lægges til i millisekunder. I dette tilfælde lægges to dage til.

function ut(f) {
a = f.startDate.value;
b = f.startHours.value;
c = f.startHours.value;
if (a.length + b.length + c.length != 14) {
alert("Husk at indtaste samtlige tal!");
f.chooseTime.checked = false;
return;
}
d = parseInt(a.substr(0,2),10);
m = parseInt(a.substr(3,2),10) - 1;
y = parseInt(a.substr(6,4),10);
h = parseInt(b,10);
mi = parseInt(c,10);
if (isNaN(d) || isNaN(m) || isNaN(y) || isNaN(h) || isNaN(mi)) {
alert("Du må kun indtaste tal og punktummer!");
f.chooseTime.checked = false;
return;
}
dat = new Date(99,m,d,h,mi,0);
dat.setFullYear(y);
dat.setTime(dat.getTime() + mill);
md = dat.getDate();
mm = dat.getMonth() + 1;
my = dat.getFullYear();
mh = dat.getHours();
mmi = dat.getMinutes();
if (md.toString().length == 1) md = "0" + md;
if (mm.toString().length == 1) mm = "0" + mm;
if (mh.toString().length == 1) mh = "0" + mh;
if (mmi.toString().length == 1) mmi = "0" + mmi;
f.slutDate.value = md + "." + mm + "." + my;
f.slutHours.value = mh;
f.slutMinutes.value = mmi;
}
</script>
</head>
<body>
<form>
Startdato:<br>
<input type="text" name="startDate" value="dd.mm.yyyy" maxlength="10">,
<input type="text" name="startHours" value="hh" maxlength="2"> : <input type="text" name="startMinutes" value="mm" maxlength="2">
<input type="checkbox" name="chooseTime" value="1" onClick="if (this.checked) ut(this.form);">
<br><br>
Slutdato:<br>
<input type="text" name="slutDate" value="dd.mm.yyyy">,
<input type="text" name="slutHours" value="hh"> : <input type="text" name="slutMinutes" value="mm">
</form>
</body>
</html>

Det er OK, hvis du ingen points har.
Avatar billede Slettet bruger
06. februar 2002 - 18:41 #4
P.S. Scriptet tjekker ikke for ulovlige datoer.
Avatar billede misbruger Nybegynder
07. februar 2002 - 09:35 #5
Hej phoenixv

Ganske godt gået!!!!

Jeg har kun lavet en lille omskrivning selv.

<script>
mill = 1000*60*60*24*2; //Tiden der skal lægges til i millisekunder. I dette tilfælde lægges to dage til.

function ut(f) {
a = f.startDate.value;
b = f.startHours.value;
c = f.startMinutes.value;
box = f.chooseTime
if (a.length + b.length + c.length != 14) {
alert("Husk at indtaste samtlige tal!");
box.checked = false;
return;
}
d = parseInt(a.substr(0,2),10);
m = parseInt(a.substr(3,2),10) - 1;
y = parseInt(a.substr(6,4),10);
h = parseInt(b,10);
mi = parseInt(c,10);
if (isNaN(d) || isNaN(m) || isNaN(y) || isNaN(h) || isNaN(mi)) {
alert("Du må kun indtaste tal og punktummer!");
box.checked = false;
return;
}
if (d > 31 || m > 12 || y > 2005) {
alert("Datoen er af forkert format! Det rigtige format er dd.mm.yyyy");
box.checked = false;
return;
}
if (h > 24 || mi > 59) {
alert("Tidspunktet er af forkert format! Det rigtige format er hh:mm");
box.checked = false;
return;
}
dat = new Date(99,m,d,h,mi,0);
dat.setFullYear(y);
dat.setTime(dat.getTime() + mill);
md = dat.getDate();
mm = dat.getMonth() + 1;
my = dat.getFullYear();
mh = dat.getHours();
mmi = dat.getMinutes();
if (md.toString().length == 1) md = "0" + md;
if (mm.toString().length == 1) mm = "0" + mm;
if (mh.toString().length == 1) mh = "0" + mh;
if (mmi.toString().length == 1) mmi = "0" + mmi;
f.slutDate.value = md + "." + mm + "." + my;
f.slutHours.value = mh;
f.slutMinutes.value = mmi;
}
</script>
Avatar billede misbruger Nybegynder
07. februar 2002 - 09:37 #6
Jeg takker for hjælpen!

Scriptet har givet mig en meget bedre forståelse for tidsfunktioner i js!
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