Avatar billede JenZen Novice
20. september 2006 - 19:08 Der er 6 kommentarer og
1 løsning

validering af dato og validering af tid

Validering af dato:
Her har jeg brug for at hvis folk indtaster 20092006 skal den gå ind og skrive 20-09-2006 eller eks. 01092006 skal rettes til 01-09-2006.

Validering af til:
Her har jeg brug for at hvis folk indtaster 0900 skal den gå ind og skrive 09:00 eller eks. 1200 skal rettes til 12:00.
Avatar billede ldanielsen Nybegynder
20. september 2006 - 23:57 #1
Sidste del:

<form>
<input type="text" name="Tid" onchange="this.value = retTid(this.value);"  onkeyup="this.value = doRemoveIllegal(this.value);">
</form>
<script language=javascript>

function retTid(strIn){
    if (strIn.indexOf(":") == -1){
        strIn = "0000" + strIn;
        strIn = strIn.substring(strIn.length - 4);
        return strIn.substring(0, 2) + ":" + strIn.substring(2);
    }else{
        return strIn;
        }
    }
   
function doRemoveIllegal(strIn){
    return strIn.replace(/[^\d ^:]/gi, "");
    }
</script>

På onchange sættes et kolon ind tredjesidst, hvis der intet kolon findes
På onkeyup fjernes alle tegn der ikke er tal eller kolon

Den med datoerne kan jeg ikke lige se hvordan man laver. Men jeg finder noget andet til dig.
Avatar billede ldanielsen Nybegynder
21. september 2006 - 00:00 #2
<form>
<input name="datoField" onchange="checkDato(this);">
</form>
<script language=javascript>
function checkDato(objField){
   
    var isValid = true
    var arrDato = objField.value.split("-");
   
    if (arrDato.length != 3) isValid = false;
    if (isValid) if (arrDato[2].length != 4) isValid = false;
   
    for (i=0;i<arrDato.length;i++){
        if (parseInt(arrDato[i], 10) != arrDato[i]) isValid = false;
        }

    if (!isValid){
        alert("Datoen skal have formatet dd-mm-åååå");
        objField.focus();
        return (false);
        }
   
    var testDate = new Date(arrDato[2], arrDato[1] - 1, arrDato[0]);
    if (testDate.getDate() != arrDato[0]) isValid = false;
    if (testDate.getMonth() != arrDato[1] - 1) isValid = false;
    if (testDate.getYear() != arrDato[2]) isValid = false;
   
    if (!isValid){
        alert("Ugyldig dato");
        objField.focus();
        return (false);
        }
   
    }

</script>
Avatar billede JenZen Novice
21. september 2006 - 00:50 #3
Hej Idanielsen er der nogen grund til at dato check skal hedde datofield, altså i formen.
Og funktionen med tid kan jeg ikke få til at fungere..?
Avatar billede roenving Novice
21. september 2006 - 11:17 #4
-- og hvis du gerne vil have den, så den gør det, du spørger om, kan det også sagtens laves, men der skal jo selvfølgelig så bruges noget kode til at teste datoens/tidens validitet også !-)
Avatar billede ldanielsen Nybegynder
21. september 2006 - 12:28 #5
I begge tilfælde virker funktionerne ligemeget hvad felterne hedder

Du har ret, den med tid virker ikke nu, fordi onkeyup konflikter med onchange, det havde jeg ikke set. Prøv dette:

<form>
<input type="text" name="Tid" onchange="this.value = doRemoveIllegal(this.value); this.value = retTid(this.value);">
</form>
<script language=javascript>

function retTid(strIn){
    if (strIn.indexOf(":") == -1){
        strIn = "0000" + strIn;
        strIn = strIn.substring(strIn.length - 4);
        return strIn.substring(0, 2) + ":" + strIn.substring(2);
    }else{
        return strIn;
        }
    }
   
function doRemoveIllegal(strIn){
    return strIn.replace(/[^\d ^:]/gi, "");
    }
</script>
Avatar billede JenZen Novice
23. september 2006 - 23:38 #6
Hvad skal man gøre hvis man skal have en række forskellige funktioner ved Onchange ? er det overhovedet muligt ?
Avatar billede roenving Novice
25. september 2006 - 23:20 #7
Sagtens, du skal bare kalde funktioner efter hinanden, f.eks.

onchange="minFunktion1();minFunktion2();minFunktion3();minFunktion4()"
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