Avatar billede lubker Nybegynder
02. juli 2007 - 19:40 Der er 8 kommentarer og
1 løsning

validering af klokkeslæt

Hej experter.
Jeg har en formular, hvor man kan indtaste et klokkeslæt af formatet tt:mm.
Hvordan validerer jeg at der udelukkende kan indtastes tal på hver side af :.
På nuværende tidspunkt bruger jeg følgende kode, der automatisk indsætter : når man når dertil og sletter tegn hvis strengen er over 5 tegn.

function valtime(strIn){
    if(strIn.length == 2){
        return strIn+":";       
    } else if(strIn.length>4){
        return strIn.substring(0,5);
    } else {
        return strIn;                   
    }
}
Avatar billede lubker Nybegynder
02. juli 2007 - 19:44 #1
Det smarteste ville egentlig være at slette alle ugyldige tegn direkte når funktionen kaldes.
Avatar billede hells Nybegynder
02. juli 2007 - 20:47 #2
"Det smarteste ville egentlig være at slette alle ugyldige tegn direkte når funktionen kaldes."

Prøv med det her:
function valtime(strIn){
return strIn.replace(/^.*([0-2]).*([0-9]).*(:).*([0-5]).*([0-9]).*$/,"$1$2$3$4$5");
}

Den klarer det ret godt, selvom den har sine bivirkninger. F.eks. tillader den klokkeslættet 29:55.
Avatar billede lubker Nybegynder
02. juli 2007 - 21:41 #3
Hm. syntes ikke lige jeg kan få den til at virke.
Kalder den med: onkeyup='this.value = valtime(this.value);'
Men der sker ikke så meget.
Hvad gør jeg forkert?
Avatar billede olebole Juniormester
03. juli 2007 - 09:45 #4
<ole>

Gør det let for brugeren og dig selv:

<script type="text/javascript">
var oHour = oMin = optTempl = null;
window.onload = function() {
    var o, j;
    oHour = document.getElementById("selHour");
    oMin = document.getElementById("selMin");
    oMin.style.width = oHour.offsetWidth + "px";
    o = oHour.getElementsByTagName("option")[0];
    optTempl = o.cloneNode(true);
    oHour.removeChild(o);
    for (var i=0; i<60; i++) {
        j = i<9 ? "0"+i : i;
        if (i<24) {
            o = optTempl.cloneNode(true);
            o.setAttribute("value", j);
            o.firstChild.nodeValue = j;
            oHour.appendChild(o);
        }
        o = optTempl.cloneNode(true);
        o.setAttribute("value", j);
        o.firstChild.nodeValue = j;
        oMin.appendChild(o);
    }

}
</script>

<select id="selHour" name="selHour">
    <option>00</option>
</select>

<select id="selMin" name="selMin"></select>

/mvh
</bole>
Avatar billede lubker Nybegynder
04. juli 2007 - 00:04 #5
Det kan jo i sidte ende blive løsningen, men bryder mig bestemt ikke om drop downbokse.
Prøver at arbejde lidt videre på det.
Avatar billede olebole Juniormester
04. juli 2007 - 12:54 #6
Nu skal vi jo ikke kode efter, hvad vi selv kan lide ... og jeg er helt sikker på, at brugeren ikke er interesseret i tre-fire fejlbeskeder, fordi han/hun ikke kan gennemskue, hvad det er, koderen gerne vil have vedkommende til at skrive

- just my two cents  =)
Avatar billede lubker Nybegynder
04. juli 2007 - 13:08 #7
Helt enig.
Problemet er lidt mere den applikation den skal implementeres på.
Begrænset plads, hvor alt gerne hurtigt skal kunne indtastes uden brug af mus. Hvilket er problemet med dropdown.
Men selvfølgelig skal der ikke vises alverdens fejlmeddelelser.
HAr ednu ikke fået kigget cidere på det, men giver besked når jeg når videre.
Avatar billede lubker Nybegynder
31. august 2007 - 22:12 #8
Så kom jeg endelig videre.
Det lykkedes at lave en realtime tjekker der sikrer at der kun indtastes gyldige værdier, og selv skifter.

Vil I have point må I lægge et svar.
Avatar billede olebole Juniormester
01. september 2007 - 00:04 #9
Dropdowns er netop intet mindre end fremragende, når man ønsker at minimere musearbejdet. Kan dine brugere ikke finde ud af at bruge TAB og piltaster, må de vente et par år med PC-kørekortet og begynde med et 'sorteperkort'  ;o)
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