/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Simpel validering af dato+tid i javascript
Fra : Peter Konner


Dato : 07-09-03 12:35

Hej NG,

Jeg spurgte d. 2/9 efter et valideringsscript til dato'er, og fik et par
gode input.

Hvis nogle derfor savner et script til validering af både dato og
klokkeslæt, så har jeg lagt et lille eksempel ud på
http://www.pointfigure.dk/filer/datotest.htm

Kommentarer er velkomne - scriptet er ikke særlig avanceret, men da det skal
bruges i en form, hvor brugeren ofte indtaster en dato, har jeg valgt formen
[ddmmåå] og [ttmm] som hhv. dato og klokkeslæt. Det øger
indtastningshastigheden, og den efterfølgende konvertering til db-format
skulle være rimelig simpel !

Håber, det kan bruges......

--
-.-:-.-:-.-:-.-
Regards / Mvh
Peter Konner
Remove car from email / Fjern bilen fra min email




 
 
Lasse Reichstein Nie~ (07-09-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 07-09-03 15:39

"Peter Konner" <konner@mazdapc.dk> writes:

> Hvis nogle derfor savner et script til validering af både dato og
> klokkeslæt, så har jeg lagt et lille eksempel ud på
> http://www.pointfigure.dk/filer/datotest.htm
>
> Kommentarer er velkomne

Du kan teste om en streng er ren numerisk med et regulært udtryk:

function erTal (s) {
return (/^\d+$/).test(s);
// eller (måske en anelse hurtigere en gang imellem)
// return !(/\D/).test(s);
}

Ældre browsere forstår måske ikke regexp-literal-notationen,
så /^\d+$/ kan udskiftes med
new RegExp("^\d+$")

Det kan også nemt indpasses i de funktioner der bruger det,
i stedet for en separat funktion. Så kan man også tjekke at
det er det rigtige antal cifre med det samme.

Det er nemmere at teste en dato ved hjælp af Date-objekter.

function erDato(dtStr) {
if (! (/^\d{6}$/).test(dtStr)) {
alert("Dato-indtastningen skal være seks cifre")
return false;
}
var dag = +dtStr.substring(0,2);
var mnd = +dtStr.substring(2,4)-1;
var aar = +dtStr.substring(4,6);
aar += (aar >= 60)?1900:2000;

var dato = new Date(aar,mnd,dag);
if (dato.getDate() != dag) {
alert("Dagen er ikke korrekt for den indtastede måned");
return false;
}
if (dato.getMonth() != mnd) {
alert("Måneden skal være mellem 01 og 12");
return false;
}
return true;
}

Der er ingen grund til at teste året, hvis man kun kan indtaste to
cifre, så kan det ikke give noget uden for 0-99.

I erTid-funktionen fjerner du foranstillede nuller fra strengen inden
du bruger parseInt. Det er ikke nødvendigt hvis du tilføjer et ekstra
argument til parseInt.
tim = parseInt(strTim,10); // altid base 10
Du kan også bruge en af de mange andre metoder til at oversætte strenge
til tal, nu du allerede har tjekket at der kun er cifre i strengen.
Jeg foretrækker "fortegns-plus", som virker lige som parseFloat.

Din test accepterer tiden 24:12. Er det med vilje?

function erTid(tmStr) {
if (!(/^\d{4}$/).test(tmStr)) {
alert("Tid skal indtastes som fire cifre");
return false;
}
var tim = +tmStr.substring(0,2);
var mnt = +tmStr.substring(2,4);
if (mnt < 0 || mnt > 59) {
alert("Minuttallet skal være mellem 00 og 59");
return false;
}
if (tim < 0 || tim > 23) {
alert("Timetallet skal være mellem 00 og 23");
return false;
}
return true;
}

> scriptet er ikke særlig avanceret, men da det skal
> bruges i en form, hvor brugeren ofte indtaster en dato, har jeg valgt formen
> [ddmmåå] og [ttmm] som hhv. dato og klokkeslæt.

Du burder gøre plads til fire cifre for året. Det er ikke svært at
teste for otte cifre og lade året være de sidste fire. Eller fem, hvis
du vil være *rigtigt* fremtidssikret.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Peter Konner (07-09-2003)
Kommentar
Fra : Peter Konner


Dato : 07-09-03 22:39

"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
news:n0dgwtlv.fsf@hotpop.com...
>
> Du burder gøre plads til fire cifre for året. Det er ikke svært at
> teste for otte cifre og lade året være de sidste fire. Eller fem, hvis
> du vil være *rigtigt* fremtidssikret.
>
> /L

Lasse - tak for dine kommentarer.
Den med 24:12 havde jeg overset
Well, der er endnu lidt arbejde at gøre......

--
-.-:-.-:-.-:-.-
Regards / Mvh
Peter Konner
Remove car from email / Fjern bilen fra min email



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste