Avatar billede compac Seniormester
27. marts 2010 - 13:51 Der er 1 kommentar og
1 løsning

Validering af tidspunkt

Jeg skal have valideret et inputfelt til  et klokkeslet.
00.00

Det skal fungere således, at man skal kunne nøjes med at indtaste timerne (uden nul foran) - og den selv sætter et nul foran timerne, hvis det er under kl.10
Jeg har denne kode, men den fungerer kun hvis man indtaster timerne MED nul foran:

<html>
<head>

<script language="JavaScript">

function timeValidator(timeStr) {
    var formattedTime = new String();
    var timeSep = timeStr;
    //Erstat alle punktummer med kolon.
    timeSep = timeSep.replace(/\./g, ':');
    //Split timer og minutter fra hinanden
    timeSep = timeSep.split(':', 2);
   
    var hour = timeSep[0];
    var minute = timeSep[1];
   
    var isValid = true;
   
    //Hvis ikke der er angivet minutter, så går vi ud fra det skal være 00.
    if(minute == null || minute == '')
        minute = '00';
   
    //isNaN = is Not a Number. Funktionen returnerer altså true hvis det ikke er et tal
    //(og det er jo det eneste vi vil arbejde med her, så hvis der bliver returneret true,
    //sættes isValid til false.)
    if(isNaN(hour) || isNaN(minute))
        isValid = false;
   
    //Vi tjekker om tallene stemmer overens med et tidsformat vi kender.
    if(hour > 23 || hour == null || hour < 0)
        isValid = false;
   
    if(minute > 59 || minute == null || minute < 0)
        isValid = false;
   
    if(!isValid) {
        alert('Tiden er ikke angivet korrekt');
    } else {
        //Hvis der er angivet et tal under 10 sikrer vi os, at der kommer et nul foran
        if(hour < 10 && hour.length == 1)
            formattedTime = '0';
        formattedTime += hour + ':';
   
        if(minute < 10 && minute.length == 1)
            formattedTime += '0';
        formattedTime  += minute;
       
        document.timeform.time.value = formattedTime;
    }
}
</script>
</head>

<body>

<center>
<form name=timeform>
<input type=text name=time onBlur="timeValidator(document.timeform.time.value);"><br>
</form>
</center>

Kan nogen få øje på fejlen?
Avatar billede intenz Novice
27. marts 2010 - 17:34 #1
Det virker fint her, både i IE og firefox. Hvilken fejl får du?

Hvis man skriver 011 validerer den tilgengælg også, så du skal også lige tjekke længden på time/minut (hour.length==2).
Avatar billede compac Seniormester
28. marts 2010 - 14:08 #2
Jeg har opdaget, at fejlen kun opstår hvis man benytter punktummet i "regnemaskine-tastaturet". Det vil sige - det står som et punktum på tastaturet, men skriver komma på skærmen.
- så: puktum, punktum, komma streg----sådan tegner man Nicolaj.
Undskyld ulejligheden.
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