|
| Validering af formmail Fra : Is |
Dato : 13-04-05 23:42 |
|
Hej
Jeg har en side med en formmail som virker godt nok, men nu vil sætte alders
grænse ind. Men den virker ikke som jeg gerne vil:
<script type="text/javascript">
---
if(document.forms[0].modul.value== 1)
{
// her indsættes årstels grænse for modul 1
if(document.forms[0].y1.value<= 2005)
{
// her indsættes måneds grænse for modul 1 ( 2 ciffer )
if(mm <= 09)
{
alert('Du er for gammel til dette modul');
document.forms[0].modul.focus();
return false;
}
}
alert('Har du set ??? !');
}
---
forms[0].modul = 1. kriterie og det er ok
forms[0].y1 = er årstal som kan vælges i er felt (y1)
mm = noget jeg selv omsætter fra et felt hvor jeg har valgt måned (i tekst)
til et 2 ciffer tal.
ideen med det hele er at alt over ½ år, skal vælge et andet modul !!
Men det virker som om den er lige glad med y1, bare mm <= 09
Hvad gør jeg galt ???
har forsøgt med:
document.write (document.forms[0].y1.value + mm)
som hvis jeg har valgt:
januar 2003
bliver til :
200301
--
Med venlig hilsen
Erik Isager
| |
Jens Peter Karlsen [~ (14-04-2005)
| Kommentar Fra : Jens Peter Karlsen [~ |
Dato : 14-04-05 07:59 |
|
Du spørger om årstallet er 2005 eller mindre og det vil jo altid være
sandt medmindre nogen skriver forkert.
For at checke om valgt år/måned ligger indenfor det sidste halve år skal
du først og fremmest finde dagens dato. Derfra udtrækker du så måneden
og årstallet. Hvis årstallet er det samme som det valgte checker du bare
om der er gået over 6 måneder af året. Er der ikke det er den god nok.
Er der gået over 6 måneder trækker du den valgte måned fra den
nuværende. Bliver resultatet under eller lig 6 er den også god nok.
Det bliver en lille smule mere kompliceret hvis årstallet ikke er det
samme men fra ovenstående beskrivelse bør du kunne se hvad du skal gøre.
Regards Jens Peter Karlsen. Microsoft MVP - Frontpage.
Is wrote:
> if(document.forms[0].y1.value<= 2005)
> {
> // her indsættes måneds grænse for modul 1 ( 2 ciffer )
> if(mm <= 09)
> {
> alert('Du er for gammel til dette modul');
> document.forms[0].modul.focus();
> return false;
> }
| |
Is (14-04-2005)
| Kommentar Fra : Is |
Dato : 14-04-05 18:15 |
|
"Jens Peter Karlsen [FP-MVP]" <jpkarlsen@mvps.org> skrev i en meddelelse
news:425e14b5$0$224$edfadb0f@dread12.news.tele.dk...
> Du spørger om årstallet er 2005 eller mindre og det vil jo altid være
> sandt medmindre nogen skriver forkert.
> For at checke om valgt år/måned ligger indenfor det sidste halve år skal
> du først og fremmest finde dagens dato. Derfra udtrækker du så måneden
> og årstallet. Hvis årstallet er det samme som det valgte checker du bare
> om der er gået over 6 måneder af året. Er der ikke det er den god nok.
> Er der gået over 6 måneder trækker du den valgte måned fra den
> nuværende. Bliver resultatet under eller lig 6 er den også god nok.
> Det bliver en lille smule mere kompliceret hvis årstallet ikke er det
> samme men fra ovenstående beskrivelse bør du kunne se hvad du skal gøre.
>
> Regards Jens Peter Karlsen. Microsoft MVP - Frontpage.
>
> Is wrote:
>
> > if(document.forms[0].y1.value<= 2005)
> > {
> > // her indsættes måneds grænse for modul 1 ( 2 ciffer )
> > if(mm <= 09)
> > {
> > alert('Du er for gammel til dette modul');
> > document.forms[0].modul.focus();
> > return false;
> > }
>
---
Hej
Efter at ha sovet lidt på det, kan jeg godt se hvorfor det ikke virker som
jeg vil har det til
Og jeg vil ikke bruge dd. da det ikke er ½ år fra dd. men f. eks ½ år før 20
arp. og det vil det så være i 3 - 6 mdr. for så derefter at være ud fra en
ny dag i en periode.
men tak for svar.
--
Med venlig hilsen
Erik Isager
| |
Is (15-04-2005)
| Kommentar Fra : Is |
Dato : 15-04-05 19:55 |
|
"Jens Peter Karlsen [FP-MVP]" <jpkarlsen@mvps.org> skrev i en meddelelse
news:425e14b5$0$224$edfadb0f@dread12.news.tele.dk...
> For at checke om valgt år/måned ligger indenfor det sidste halve år skal
> du først og fremmest finde dagens dato. Derfra udtrækker du så måneden
> og årstallet. Hvis årstallet er det samme som det valgte checker du bare
---
Nå ja, jeg havde først sagt nej - men nu vil jeg lige prøve aligevel !
Jeg starter med:
<script language="javascript">
// henter fuld tid
nu = new Date;
document.write (nu);
Hvordan trækker jeg 6 mdr fra "nu" ??
Jeg har også prøvet at skrive :
mmmmm = nu.getMonth();
document.write (mmmmm);
her er resultatet idag "3" og det er jo rigtigt nok, men hvis nu jeg vil ha
der skal stå "04" ?
jeg kan godt + 1 , men hvordan kan jeg herefter sætte 0 foran hvis
mmmm<10 ?
--
Med venlig hilsen
Erik Isager
| |
Tomasz Otap (15-04-2005)
| Kommentar Fra : Tomasz Otap |
Dato : 15-04-05 22:20 |
|
Is wrote:
> // henter fuld tid
> nu = new Date;
> document.write (nu);
>
>
> Hvordan trækker jeg 6 mdr fra "nu" ??
Denne script sammenligner to datoer (nu og myDate) og returnerer
forskellen i måneder i variablen dateDiff. Bemærk, at det er nogen
"løse" måneder, der opereres med - 30 dage pr. måned, uanset. :)
---------------
var myDate = new Date(2005, 0, 1);
var nu = new Date();
var oneMonth=1000*60*60*24*30;
var dateDiff = Math.ceil((nu.getTime()-myDate.getTime())/(oneMonth));
if (dateDiff < 6 ) {
alert('Under 6 måneder gammel ('+dateDiff+' måneder)');
}
else {
alert('Over 6 måneder gammel ('+dateDiff+' måneder)');
}
---------------
t
| |
Is (16-04-2005)
| Kommentar Fra : Is |
Dato : 16-04-05 20:35 |
|
Hej
For at forstå lidt af hvad det er der sker, prøve jeg mig lidt frem:
Jeg er nu gået i stå her :
<script language="javascript">
// henter fuld tid
var nu = new Date;
document.write (" nu - ", nu,"<br>");
//uddrager år
var nuyy = nu.getYear();
document.write (" år - ",nuyy,"<br>");
//uddrager mdr
var numm = nu.getMonth();
numm = numm + 1
if (numm < 10)
{
numm = "0" + numm;
}
document.write (" mdr. - ",numm,"<br>");
// udregner nutid til antal mdr
var nutidyy = nuyy * 12;
var nutidmd = nutidyy + numm;
document.write (" år i mdr. - ",nutidyy,"<br>");
document.write (" mdr tot. - ",nutidmd,"<br>");
kode stop!
---
var nutidmd = nutidyy + numm; ???????????
hvis jeg skriver:
var nutidmd = nutidyy + 4
bliver det 24064, og det mener jeg er rigtigt.
men skriver jeg:
var nutidmd = nutidyy + numm;
skrives det efter hinanden og bliver til 2406004
vil jeg gange går det rigtigt
var nutidmd = nutidyy * numm; som bliver 96240
Hvad skal jeg gøre for at lægge disse sammen :
nutidyy + numm ???
Eller kan man formatere sig ud af opgaven ? "nu" vist i antal måneder ??
--
Med venlig hilsen
Erik Isager
| |
Tomasz Otap (17-04-2005)
| Kommentar Fra : Tomasz Otap |
Dato : 17-04-05 14:07 |
|
Is wrote:
> if (numm < 10)
> {
> numm = "0" + numm;
> }
Jeg tror, det går galt her: variablen numm, som indtil nu opfattes som
numerisk værdi, bliver nu konveret til en string-værdi ved at blive
sammenlagt med string "0".
> var nutidmd = nutidyy + numm; ???????????
Eftersom din numm er nu en string, bliver den samlede værdi nutidmd også
en string. Derfor skrives nutidyy og numm efter hinanden i stedet for at
blive adderet.
> vil jeg gange går det rigtigt
> var nutidmd = nutidyy * numm; som bliver 96240
Ja: multiplicerings-operator (*) kræver to numeriske værdier. Derfor
konverterer JavaScript dine værdier tilbage til numeriske værdier.
> Hvad skal jeg gøre for at lægge disse sammen :
> nutidyy + numm ???
Lad være med at tilføje "0" til numm, eller tilføj det først når du skal
til udskrive værdien, og du behøver ikke længere lave beregninger med den.
Alternativt vil Number(numm) angive variablen numm med dens numeriske
værdi, men det vil atter fjerne dit foranstillede 0.
t
| |
Is (17-04-2005)
| Kommentar Fra : Is |
Dato : 17-04-05 15:18 |
|
> Is wrote:
> > if (numm < 10)
> > {
> > numm = "0" + numm;
> > }
>
> Jeg tror, det går galt her: variablen numm, som indtil nu opfattes som
> numerisk værdi, bliver nu konveret til en string-værdi ved at blive
> sammenlagt med string "0".
---
Jeg takker mange gange - det løste problemet for mig.
( det kunne være sjovt, hvis jeg f.eks havde lavet dette i oktober -- så
havde der måneder inden problemet var kommet -- det havde nok givet mig
mange grå hår )
Kan jeg tvinge den til at opfatte "numm" som en numerisk værdi ???
--
Med venlig hilsen
Erik Isager
| |
Tomasz Otap (17-04-2005)
| Kommentar Fra : Tomasz Otap |
Dato : 17-04-05 16:27 |
|
Is wrote:
> ( det kunne være sjovt, hvis jeg f.eks havde lavet dette i oktober -- så
> havde der måneder inden problemet var kommet -- det havde nok givet mig
> mange grå hår )
Jep, det er altid sjovt med en tidsindstillet fejl i egen kode... Så har
man noget at lave på de lange vintermåneder i januar. :)
> Kan jeg tvinge den til at opfatte "numm" som en numerisk værdi ???
Hvis du tænker på denne sætning:
------------
numm = "0" + numm;
------------
så nej, ikke hvis du ønsker at fremvise numm som et tal med forudgående
nuller. I tallerne indeholdende forudgående nuller bliver nullerne altid
kasseret, da de er egentlig overflødige. F.eks. vil numm =
Numeric("007") altid blive konverteret til 7, ikke til 007.
t
| |
Is (17-04-2005)
| Kommentar Fra : Is |
Dato : 17-04-05 19:03 |
|
"Tomasz Otap" <tomasz@otap.justRemoveThis.dk> skrev i en meddelelse
news:42628060$0$78288$157c6196@dreader1.cybercity.dk...
Jeg takker !
--
Med venlig hilsen
Erik Isager
| |
Lasse Reichstein Nie~ (15-04-2005)
| Kommentar Fra : Lasse Reichstein Nie~ |
Dato : 15-04-05 22:47 |
|
"Is" <detteerminnewsmailadresse2@get2net.dk> writes:
> <script language="javascript">
>
> // henter fuld tid
> nu = new Date;
> document.write (nu);
> Hvordan trækker jeg 6 mdr fra "nu" ??
Først skal du beslutte dig hvad "6 måneder fra" betyder. En måned er
jo ikke altid lige lang.
Hvad er seks måneder før d. 31. august? Der er jo ikke nogen 31.
februar, så er det d. 28. (ell 29.) februar, eller er det måske
d. 3. marts?
Lad os sige at du blot trækker 6 fra måneden, og hvis datoen ikke
findes i den måned, så vælges månedens sidste dag. Altså seks måneder
før 31. august er 28. februar.
---
var da = new Date();
var daMon = da.getMonth();
da.setMonth(daMon - 6);
if ((12 + daMon - da.getMonth())%12 != 6) {
da.setDate(0);
}
document.write(da);
---
> Jeg har også prøvet at skrive :
>
> mmmmm = nu.getMonth();
> document.write (mmmmm);
>
> her er resultatet idag "3" og det er jo rigtigt nok, men hvis nu jeg vil ha
> der skal stå "04" ?
m = m + 1;
document.write(m<10?"0":"", m)
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL: http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
| |
Is (17-04-2005)
| Kommentar Fra : Is |
Dato : 17-04-05 18:54 |
|
"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
news:y8bjiugd.fsf@hotpop.com...
> Lad os sige at du blot trækker 6 fra måneden, og hvis datoen ikke
> findes i den måned, så vælges månedens sidste dag. Altså seks måneder
> før 31. august er 28. februar.
> ---
> var da = new Date();
> var daMon = da.getMonth();
> da.setMonth(daMon - 6);
> if ((12 + daMon - da.getMonth())%12 != 6) {
> da.setDate(0);
> }
> document.write(da);
> ---
Vil du beskrive hvad det er der sker ???
Jag har prøvet mig lidt frem med at ændre de 6 mdr. men der går ikke altid
godt.
--
Med venlig hilsen
Erik Isager
| |
Lasse Reichstein Nie~ (18-04-2005)
| Kommentar Fra : Lasse Reichstein Nie~ |
Dato : 18-04-05 00:49 |
|
"Is" <detteerminnewsmailadresse2@get2net.dk> writes:
> "Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
> news:y8bjiugd.fsf@hotpop.com...
[ Vil du beskrive hvad det er der sker ???]
>> var da = new Date();
Lav et dato-objekt med nuværende tid.
>> var daMon = da.getMonth();
Tag måneden ud af dette, og gem den i variablen daMon.
>> da.setMonth(daMon - 6);
Sæt måneden i dato-objektet til seks måneder før. Hvis dette bliver
negativt, vil det automatisk blive sat til året før. Hvis datoen ikke
findes (fx 31. februar), så bliver det automatisk til en dag i
begyndelsen af næste måned.
>> if ((12 + daMon - da.getMonth())%12 != 6) {
Tester om måneden er blevet sat til det korrekte. (daMon -
da.getMonth) skulle være 6, eller -6 hvis der er skiftet til året før.
Det testes der for.
En mere læselig test kunne være:
var mdiff = daMon - da.getMonth();
if (!(mdiff == 6 || mdiff = 6 - 12)) {
da.setDate(0);
}
>> da.setDate(0);
Sætter datoen til den 0. i måneden - hvilket bliver lavet om til dagen
før den 1., altså sidste dag i måneden før.
> Jag har prøvet mig lidt frem med at ændre de 6 mdr. men der går ikke altid
> godt.
Den alternative test er lidt lettere at lege med. Med den skulle det
være nok at lave alle 6-taller om.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL: http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
| |
Is (18-04-2005)
| Kommentar Fra : Is |
Dato : 18-04-05 19:22 |
|
>
> >> if ((12 + daMon - da.getMonth())%12 != 6) {
>
> Tester om måneden er blevet sat til det korrekte. (daMon -
> da.getMonth) skulle være 6, eller -6 hvis der er skiftet til året før.
> Det testes der for.
>
> En mere læselig test kunne være:
>
> var mdiff = daMon - da.getMonth();
> if (!(mdiff == 6 || mdiff = 6 - 12)) {
> da.setDate(0);
> }
>
> >> da.setDate(0);
>
---
Denne test forstår jeg så ikke - men pyt, det skal jeg heller ikke bruge nu.
En af de ting der undrede mig mest, var at det var forskelligt ud fra hvor
mange måneder jeg ville fratrække, nogle gange var datoen ok , andre gange
den sidste i måneden ! den 17 finne jo i alle måneder ???
Nå, men man kan sige, at jeg går kun den ene vej , jeg bruger år * 12 +
måneder, den værdi sammenligner jeg så.
Tak for svar.
--
Med venlig hilsen
Erik Isager
| |
|
|