Avatar billede camp Nybegynder
20. oktober 2004 - 10:17 Der er 17 kommentarer og
1 løsning

Ønsker omskrivning af valideringsfunktion

Jeg har dette script som validere et datoformat,
og vil gerne have det omskrevet sådan at valideringen
starter når inputfeltet "forlades" (mister fokus)
og ikke OnSubmit.


<script type="text/javascript">
function check(e){
if(!e.value.match(/^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[0-2])[\/\-]20(\d{2})$|^$/))alert('datoen er ikke gyldig');
}
</script>
Avatar billede and_ Nybegynder
20. oktober 2004 - 10:26 #1
så lave du bare:

<input type="text" onblur"check(this);">

Så tjekker den feltet når du forlader den
Avatar billede camp Nybegynder
20. oktober 2004 - 10:50 #2
Det virker faktisk meget godt, men man kan stadig submitte selvom der meldes om fejl.
Kan jeg indskyde en normal onSubmit trigger også?
Avatar billede and_ Nybegynder
20. oktober 2004 - 11:08 #3
Så skal du bare bibeholde din gamle submit og så bare sætte onblur på feltet...
Avatar billede camp Nybegynder
20. oktober 2004 - 11:15 #4
Hmm, det syntes jeg ikke helt virker.
Skal der ikke en OnSubmit på form tag'et?



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Validering</title>

<meta name="Generator" content="Stone's WebWriter 4">


<script type="text/javascript">
function check(e){
if(!e.value.match(/^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[0-2])[\/\-]20(\d{2})$/))alert('Das eingegebene Datum ist unzulässig.\n\nBitte geben Sie das Datum folgendermaßen ein: TT-MM-JJJJ');
}
</script>


</head>
<body>

<form name="" action="" method="">

<input type="text" class="shortfield" name="SD" value="23-10-2004" onblur="check(this)">
<input type="text" class="shortfield" name="ED" value="30-10-2004" onblur="check(this)">

<input type="submit" class="button" name="submit" value="Suche starten!" onblur="check(this)">

</form>

</body>
</html>
Avatar billede and_ Nybegynder
20. oktober 2004 - 11:26 #5
hehe.. kreativt... Det må jeg give dig ;)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Validering</title>

<meta name="Generator" content="Stone's WebWriter 4">


<script type="text/javascript">
function check(e){
if(!e.value.match(/^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[0-2])[\/\-]20(\d{2})$/))alert('Das eingegebene Datum ist unzulässig.\n\nBitte geben Sie das Datum folgendermaßen ein: TT-MM-JJJJ');
}

function tjekalle()
{
    t1 = document.getElementById('SD');
    t2 = document.getElementById('ED');
    if(!t1.value.match(/^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[0-2])[\/\-]20(\d{2})$/))
    {
        alert('Das eingegebene Datum ist unzulässig.\n\nBitte geben Sie das Datum folgendermaßen ein: TT-MM-JJJJ');
        t1.focus();
        return false;
    }

    if(!t2.value.match(/^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[0-2])[\/\-]20(\d{2})$/))
    {
        alert('Das eingegebene Datum ist unzulässig.\n\nBitte geben Sie das Datum folgendermaßen ein: TT-MM-JJJJ');
        t2.focus();
        return false;
    }
    return true;
}
</script>


</head>
<body>

<form name="" action="" method="" onsubmit="return tjekalle()">

<input type="text" class="shortfield" name="SD" value="23-10-2004" onblur="check(this)">
<input type="text" class="shortfield" name="ED" value="30-10-2004" onblur="check(this)">

<input type="submit" class="button" name="submit" value="Suche starten!">

</form>

</body>
</html>
Avatar billede camp Nybegynder
20. oktober 2004 - 11:27 #6
Har fået det nogenlunde til at virke ved at sætte:

onClick="check (SD,ED)" 

ind i submitknappen, men der er ballade fordi den ved forsøg
på submit med en fejl resetter datofeltet til defaultværdien.

(Value er taget med fordi der dynamisk vil blive indsat datoer
når det hele er klart)
Avatar billede camp Nybegynder
20. oktober 2004 - 11:29 #7
Kan man ikke undgå "dobbeltkonfekten"?

Den første kode jeg skrev virker næsten med onClick="check (SD,ED)" i submit
Avatar billede and_ Nybegynder
20. oktober 2004 - 11:31 #8
Godt så... en lidt anden løsning:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Validering</title>

<meta name="Generator" content="Stone's WebWriter 4">


<script type="text/javascript">
function check(e)
{
    if(!e.value.match(/^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[0-2])[\/\-]20(\d{2})$/))
    {
        alert('Das eingegebene Datum ist unzulässig.\n\nBitte geben Sie das Datum folgendermaßen ein: TT-MM-JJJJ');
        e.focus();
        return false;
    }
    return true;
}
</script>


</head>
<body>

<form name="" action="" method="" onsubmit="return check(SD,ED)">

<input type="text" class="shortfield" name="SD" value="23-10-2004" onblur="check(this)">
<input type="text" class="shortfield" name="ED" value="30-10-2004" onblur="check(this)">

<input type="submit" class="button" name="submit" value="Suche starten!">

</form>

</body>
</html>
Avatar billede and_ Nybegynder
20. oktober 2004 - 11:32 #9
jeg forstår ikke dit spg. i Kommentar: camp 20/10-2004 11:29:32
Avatar billede camp Nybegynder
20. oktober 2004 - 11:36 #10
Jeg spørger bare om man ikke kan undgå de mange gentagelser, men du kommer jo selv efterfølgende med et kanon alternativ!

Nu skal du bare lave et svar :-)
Avatar billede and_ Nybegynder
20. oktober 2004 - 11:42 #11
Er da glad for at du kan bruge det ;)

Måske et lettere dumt/offtopic spørgsmål:

Hvad f***** betyder det tyske? hehe... i'm dumb at german ;)
Avatar billede camp Nybegynder
20. oktober 2004 - 11:47 #12
Det betyder bare at datoformatet er ugyldigt, og beder brugeren indtaste et datoformat som DD-MM-ÅÅÅÅ
Avatar billede roenving Novice
20. oktober 2004 - 12:33 #13
-- du skal bare være klar over, at der sandsynligvis vil være forskelle i, hvordan det virker i browserne, samt at din check (SD,ED) aldrig checker ED !-)
Avatar billede camp Nybegynder
20. oktober 2004 - 12:35 #14
Det er lidt sent at sige nu når sprøgsmålet er lukket.
Har du et bud på hvordan ED kan inddrages?
Avatar billede roenving Novice
20. oktober 2004 - 12:41 #15
Lidt sent, hvordan ?-)

-- jeg kan jo først kommentere, når jeg har set spørgsmålet !-)

-- og jeg ville nok vælge en anelse anderledes angrebsvinkel, og f.eks. også returnere false ved onblur ...
Avatar billede camp Nybegynder
20. oktober 2004 - 12:45 #16
Ingen problemer, dit input er meget velkomment, men spørgsmålet er jo lukket.
Hvis du har mod på at omskrive til noget der virker bedre vil jeg gerne lave et nyt spørgsmål.
Avatar billede and_ Nybegynder
20. oktober 2004 - 12:58 #17
jeg vil skam godt gå af med nogen point for dette spg til dig roenving...
Avatar billede roenving Novice
20. oktober 2004 - 13:27 #18
F.eks.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Validering</title>

<meta name="Generator" content="Stone's WebWriter 4">


<script type="text/javascript">
function check(e,al){
  if(!e.value.match(/^(0?[1-9]|[12]\d|3[01])[\/\-](0?[1-9]|1[0-2])[\/\-]20(\d{2})$/)){
    if(!al)alert('Das eingegebene Datum ist unzulässig.\n\nBitte geben Sie das Datum folgendermaßen ein: TT-MM-JJJJ');
    return false;
  }
  return true;
}
function valider(f){
  if(check(f.SD,false)&&check(f.ED,false)){
    var d1 = f.SD.value.split("-");
    var d2 = f.ED.value.split("-");
    d1 = new Date(d1[2],d1[1],d1[0]);
    d2 = new Date(d2[2],d2[1],d2[0]);
    if(d2.getTime()>d1.getTime())
      return true;
    else{
      alert('Die Daten gibt nicht ein gut Interval');/*Og tysk er ikke mit dagligdags sprog !-)*/
      f.ED.focus();
      return false;
    }
  }else{
    alert('Das eingegebene Datum ist unzulässig.\n\nBitte geben Sie das Datum folgendermaßen ein: TT-MM-JJJJ');
    if(check(f.SD,false))
      f.ED.focus();
    else
      f.SD.focus();
    return false;
  }
}
</script>


</head>
<body>

<form name="" action="" method="" onsubmit="return valider(this);">

<input type="text" class="shortfield" name="SD" value="23-10-2004" onblur="check(this);">
<input type="text" class="shortfield" name="ED" value="30-10-2004" onblur="check(this);">

<input type="submit" class="button" name="submit" value="Suche starten!">

</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