Avatar billede nemlig Professor
19. august 2009 - 07:58 Der er 5 kommentarer og
1 løsning

Videreudvikling af klokkeslæt validering.

I tidligere tråd fik jeg hjælp til noget klokkesletvalidering og - formatering, så det står i formattet "tt:mm".

Er det muligt at gøre scriptet endnu mere perfekt, nemlig:

1. Når der er indtastet "tt", at den automatisk sætter ":". Men den skal også gøre det, hvis "tt" indtastes som "9" i stedet for "09" (altså hvis første ciffer er over "2").
2. At hvis punkt 1 med at sætte ":" virker, at det så ikke er muligt at trykke ":" igen eller ".", som også kan indtastes som skilletegn.

Koden fra den tidligere tråd ser sådan her ud:

<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 i korrekt format! (00:00)');
    } 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>
Avatar billede kdasummer Nybegynder
19. august 2009 - 11:44 #1
pas nu på ikke at forvirre dine brugere for meget....
Avatar billede nemlig Professor
19. august 2009 - 11:55 #2
Jeg mener nu, at jeg gør det modsatte :)
Dem som ikke tænker på at sætte skilletegnet, får det sat helt automatisk, og dem som vil sætte det, kan bare gøre det.
Så undgår jeg også lidt forvirring om, hvilket type skilletegn, der skal anvendes, idet tegnet sættes, når timerne er indtastet.

Men det kan selvfølgelig være, at jeg tager fejl, og at det kan forvirre mere end det gavner.

Det andet du har lavet er helt perfekt.
Avatar billede sw_red_6 Nybegynder
19. august 2009 - 16:53 #3
hvorfor ikke skæve til rejseplan på det punkt?
Der kan man indtaste op til 4 cifre og så bliver der lavet formatering når man har tastet færdig og trykker et andet sted på siden (sandsynligvis på onblur, evt også på onkeyup hvis der er 4 cifre)
Avatar billede nemlig Professor
19. august 2009 - 18:04 #4
#3 For mig at se, sker der først noget, når siden refreshes.
Avatar billede sw_red_6 Nybegynder
25. august 2009 - 13:34 #5
jep, det er mig der huskede forkert.. Men det er måske nok en meget god ide at gøre brug af onblur til at kontrollere inputtet for skilletegn..
Avatar billede nemlig Professor
19. oktober 2009 - 08:43 #6
Lukketid - der er ikke kommet en løsning.
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