Avatar billede pablo Nybegynder
12. februar 2003 - 10:34 Der er 14 kommentarer og
1 løsning

Validering af dato i tekstfelt

Hej
Jeg har brug for en lille funktion der validerer på et tekstfelt.

Når en bruger forlader tekstfeltet, skal det enten indholde en dato med formatet: dd-mm-åååå, eller ingenting.

Dvs. hvis datoen ikke er skrevet i det rigtige format, så skal der komme en ALERT boks med en advarsel, og tekstfeltet slettes.

Sidder der mon en javascript-haj derude, som kan regne den ud?
Avatar billede mm12010 Nybegynder
12. februar 2003 - 11:02 #1
<script language="JavaScript" type="text/javascript">
<!--

strDato = document.form.dato.value;

function checkFormat(){
    if(strDato != "" || document.form.dato.length == 10){
        document.form.dato.focus()
        document.form.dato.select()
        return false
        }
    if(strDato.charAt(2) != "-" && strDato.charAt(4) != "-"){
        document.form.dato.focus()
        document.form.dato.select()
        return false
        }
    return true
    }
       
//-->
</script>
Avatar billede mm12010 Nybegynder
12. februar 2003 - 11:13 #2
<script language="JavaScript" type="text/javascript">
<!--

strDato = document.form.dato.value;

function checkFormat(){
    if(strDato != "" || document.form.dato.length == 10){
        document.form.dato.focus();
        document.form.dato.select();
        return false
        }
    if(strDato.charAt(2) != "-" && strDato.charAt(4) != "-"){
        document.form.dato.focus();
        document.form.dato.select();
        return false
        }
    for (i=0; i<document.form.dato.length; i++) {
        if (document.form.dato.charAt(i) != "-") {
                if (afgivetVaerdi.charAt(i) < "0") {
                    document.form.dato.focus();
                    document.form.dato.select();
                    return false
                    }
                if (afgivetVaerdi.charAt(i) > "9") {
                    document.form.dato.focus();
                    document.form.dato.select();
                    return false
                }
            }
        }
    return true
    }
       
//-->
</script>
Avatar billede pablo Nybegynder
12. februar 2003 - 11:28 #3
Hej mm
Tak for dit svar.

Når jeg kalder scriptet sker der ingenting. Jeg bruger "onBlur" på tekstfeltet.
Min form hedder "form1" og tekstfeltet hedder "sDato". Det har jeg så rettet til i dit script, men der sker stadig ikke noget.

Kan man ikke få scriptet til at vise en ALERT boks når der går noget galt, og bagefter slette tekstfeltet? Det er nemlig vigtigt, at formen ikke bliver submittet med et forkert datoformat :-)

Kan man ikke tilføje en lille ting, så jeg kan bruge scriptet til flere forskellige tekstfelter, og så kalde scriptet med scriptnavn(this) ?

Her er dit tilrettede script (formnavn og feltnavn):

<script language="JavaScript" type="text/javascript">
<!--

strDato = document.form1.sDato.value;

function checkFormat(){
    if(strDato != "" || document.form1.sDato.length == 10){
        document.form1.sDato.focus();
        document.form1.sDato.select();
        return false
        }
    if(strDato.charAt(2) != "-" && strDato.charAt(4) != "-"){
        document.form1.sDato.focus();
        document.form1.sDato.select();
        return false
        }
    for (i=0; i<document.form1.sDato.length; i++) {
        if (document.form1.sDato.charAt(i) != "-") {
                if (afgivetVaerdi.charAt(i) < "0") {
                    document.form1.sDato.focus();
                    document.form1.sDato.select();
                    return false
                    }
                if (afgivetVaerdi.charAt(i) > "9") {
                    document.form1.sDato.focus();
                    document.form1.sDato.select();
                    return false
                }
            }
        }
    return true
    }
       
//-->
</script>
Avatar billede mm12010 Nybegynder
12. februar 2003 - 11:32 #4
smid lige koden til din form
Avatar billede pablo Nybegynder
12. februar 2003 - 11:37 #5
Hej er koden jeg bruger:

<FORM METHOD=GET ACTION="gem.asp" name="form1">
<%
Response.Write "<td><input type=text name=sDato value='" & sDato & "' onBlur=""checkFormat();""></td>"
%>
</FORM>
Avatar billede pablo Nybegynder
12. februar 2003 - 11:37 #6
hej=her
Avatar billede mm12010 Nybegynder
12. februar 2003 - 11:40 #7
<script language="JavaScript" type="text/javascript">
<!--

function checkFormat(str){
    if(str.value != "" || str.length == 10){
        alert("Forkert indtastning!");
        str.value = "";
        str.focus();
        return false
        }
    if(strDato.charAt(2) != "-" && strDato.charAt(4) != "-"){
        alert("Forkert indtastning!");
        str.value = "";
        str.focus();
        return false
        }
    for (i=0; i<str.length; i++) {
        if (str.charAt(i) != "-") {
                if (str.charAt(i) < "0") {
                    alert("Forkert indtastning!");
                    str.value = "";
                    str.focus();
                    return false
                    }
                if (str.charAt(i) > "9") {
                    alert("Forkert indtastning!");
                    str.value = "";
                    str.focus();
                    return false
                }
            }
        }
    return true
    }
       
//-->
</script>
-------------------------------------------------------------------------------
<form onSubmit="return checkFormat(this)" action="enHandling.cgi" name="form1">
Avatar billede mm12010 Nybegynder
12. februar 2003 - 11:41 #8
<FORM METHOD=GET ACTION="gem.asp" name="form1" onSubmit="return checkFormat(this)" >
<%
Response.Write "<td><input type=text name=sDato value='" & sDato & "'></td>"
%>
</FORM>
Avatar billede pablo Nybegynder
12. februar 2003 - 12:27 #9
Hmmm.. Jeg syntes ikke helt det vil som jeg vil ;-)

Prøv at se her: http://randstad.combo.dk/site/datotest.asp
Klikker du på ikonet kan du vælge en dato i det rigtige format. Det er netop dette format man også skal have mulighed for selv at taste.
Avatar billede mm12010 Nybegynder
12. februar 2003 - 13:30 #10
<FORM METHOD=GET onSubmit="return checkFormat(this.sDatoValue)" action="http://randstad.combo.dk/site/datotest2.asp" name="form1">

<table width=750 cellpadding=0 cellspacing=0 border=0><tr><td>&nbsp;</td></tr><tr><td width=150>Rekv.nr.</td><td><input type=text name=sReknr value='' style='WIDTH: 200px; BORDER-RIGHT: #243b65 1px    solid; BORDER-TOP: #243b65    1px    solid; FONT-SIZE: 8pt; BORDER-LEFT: #243b65 1px solid; COLOR: #000000; BORDER-BOTTOM: #243b65 1px solid; FONT-FAMILY: Arial, Verdana, Helvetica, Sans-Serif; HEIGHT: 17px; BACKGROUND-COLOR: #CBD9e0;'></td><td width=50>&nbsp;</td><td width=150>Dato for afslutning</td><td><input type=text name=sDato id='sDatoValue' value='' style='WIDTH: 200px; BORDER-RIGHT: #243b65 1px    solid; BORDER-TOP: #243b65    1px    solid; FONT-SIZE: 8pt; BORDER-LEFT: #243b65 1px solid; COLOR: #000000; BORDER-BOTTOM: #243b65 1px solid; FONT-FAMILY: Arial, Verdana, Helvetica, Sans-Serif; HEIGHT: 17px; BACKGROUND-COLOR: #CBD9e0;'>&nbsp;<a href='java script:kalender()'><img src='grafik/kalender.jpg' border=0></a></td></tr></table>
            <center>
            <table>
            <tr><td></td>
           
      <td width=150 align=center>
            <input type="submit" name="Submit" value="[ Opdater ]" style="border: none; background-color: #FFFFFF;" onMouseOver="window.status='Opdater totaler'; return true;";
            onMouseOut="window.status=''; return true;">   
      </td>
      &nbsp;&nbsp;
            </tr>
            </table>

</FORM>
Avatar billede mm12010 Nybegynder
12. februar 2003 - 13:31 #11
prøv det sammen med dette script:

<script language="JavaScript" type="text/javascript">
<!--

function checkFormat(str){
    if(str.value != "" || str.length == 10){
        alert("Forkert indtastning!");
        str.value = "";
        str.focus();
        return false
        }
    if(strDato.charAt(2) != "-" && strDato.charAt(4) != "-"){
        alert("Forkert indtastning!");
        str.value = "";
        str.focus();
        return false
        }
    for (i=0; i<str.length; i++) {
        if (str.charAt(i) != "-") {
                if (str.charAt(i) < "0") {
                    alert("Forkert indtastning!");
                    str.value = "";
                    str.focus();
                    return false
                    }
                if (str.charAt(i) > "9") {
                    alert("Forkert indtastning!");
                    str.value = "";
                    str.focus();
                    return false
                }
            }
        }
    cont();
    }
       
//-->
</script>
Avatar billede pablo Nybegynder
12. februar 2003 - 14:51 #12
Hej igen
Jeg er ikke så glad for at bruge en "rigtig" submit-knap til dette, da jeg skal bruge flere submit-knapper til samme form, så jeg f.eks. kan lave denne her:
----------------------------------
<A HREF="java script:cont3('side34.asp')">
----------------------------------

Parameteren bliver så formens ACTION parameter, som jeg gør sådan her:
----------------------------------
document.form1.action=page;
document.form1.submit();
----------------------------------


Det fungerer fint, men det er jo så et traditionelt link, som kalder javascriptet.

Kan men slet ikke få kaldt dit script når man forlader pågældende felt med en "onBlur" ?

//Pablo
Avatar billede mm12010 Nybegynder
12. februar 2003 - 15:33 #13
onChange="checkFormat(this); return true;"
Avatar billede pablo Nybegynder
12. februar 2003 - 16:50 #14
Fungerer onChange ikke kun på combobokse?

Uanset om jeg bruger onChange eller onBlur, så ignorerer den det.
Det er godt nok mærkeligt :-(
Avatar billede mm12010 Nybegynder
12. februar 2003 - 16:57 #15
<html><head>

<script language="JavaScript" type="text/javascript">
<!--

function checkFormat(id){
    if(id){
        el = document.getElementById(id);
        str = document.getElementById(id).value;
       
        if((str.length != 10) || (str == "")){
            alert("Forkert indtastning1!");
            el.value = "";
            return false
            }
        if(str.charAt(2) != "-" && str.charAt(5) != "-"){
            alert("Forkert indtastning2!");
            el.value = "";
            return false
            }
        for (i=0; i<str.length; i++) {
            if (str.charAt(i) != "-") {
                    if (str.charAt(i) < "0") {
                        alert("Forkert indtastning3!");
                        el.value = "";
                        return false
                        }
                    if (str.charAt(i) > "9") {
                        alert("Forkert indtastning4!");
                        el.value = "";
                        return false
                    }
                }
            }
        cont();
        return true
        }
    }
       
//-->
</script>

</head><body>
<form name="form1" method="post" action="">
  <input type="text" name="sDato" id="dato" onChange="checkFormat('dato');" value="">
</form>
</body></html>
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