Avatar billede gecko Nybegynder
16. marts 2002 - 01:09 Der er 30 kommentarer og
1 løsning

Validering af form + submit knap

Hej
Jeg er ved at lave en formular som skal valideres. der er 4 funktioner.
Er der nogle der ved hvordan jeg får dem alle startet ved at trykke på submit ????
Avatar billede kaddafi Nybegynder
16. marts 2002 - 01:15 #1
prøv med
<form onsubmit="function1();function2();function3();function4()">
Avatar billede gecko Nybegynder
16. marts 2002 - 01:18 #2
Det har jeg prøvet.....virker ikke !!!
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 01:24 #3
Jah, du skal vel have hver funktion tll at give true eller false, og så

  function evlogkrat();
    if (!f1()) return false;
    if (!f2()) return false;
    return true;
  }

og

  <form ... onsubmit="return revlogkrat();">
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 01:25 #4
tyrkfejl er gartis:

function revlogkrat() {
Avatar billede kaddafi Nybegynder
16. marts 2002 - 01:26 #5
Dette eksempel virker for mig:

<html><head><title>Form test</title>
<script language="JavaScript">
<!--
function aaaaa() {
  alert("a");
}
function bbbbb() {
  alert("b");
}
function ccccc() {
  alert("c");
}
function ddddd() {
  alert("d");
}
//-->
</script></head><body>
<form onsubmit="aaaaa();bbbbb();ccccc();ddddd()">
  <input type=submit value="send"> <br>
</form>
</body></html>
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 01:28 #6
Nej, kadaffi, det virker ikke, for du får ikke testet den
ønskede validering. Bland dig udenom hvis du ikke ved hvad
du snakker om.
Avatar billede kaddafi Nybegynder
16. marts 2002 - 01:29 #7
ok undskyld!!!
Avatar billede gecko Nybegynder
16. marts 2002 - 01:35 #8
Jeg ved ikke om det virker, nu kommer der en anden fejl......hvad er der galt ???

<HTML>
<HEAD>
<TITLE>-=Formular=-</TITLE>
<META NAME="Generator" CONTENT="Stone's WebWriter 3">
<link rel="stylesheet" type="text/css" href="stylesheet.css">

<SCRIPT LANGUAGE="Javascript">


<!-- Begin
function namecheck() {
var str = document.myform.name.value;
if (str == "") {
alert("\nNavne feltet er blankt.\n\nSkriv venligst dit navn.")
document.myform.name.focus();
return false;
}
for (var i = 0; i < str.length; i++)
{
var ch = str.substring(i, i + 1);
if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ch != ' ')
{
alert("\n Navne feltet accepterer kun bogstaver & mellemrum.");
document.myform.name.select();
document.myform.name.focus();
return false;
  }
}
return true;
}


function emailCheck (emailStr) {

/* Det følgende bliver brugt til at checke om den skrevne e-mail addresse
  passer med user@domain formatet.  den bliver også brugt til at seperere username
  fra domain. */

var emailPat=/^(.+)@(.+)$/

/* De følgende strenge representerer mønsteret for at matche alle special
  tegn.  Vi vil ikke tillade speciale tegn i addressen.
  Disse tegn inkluderer ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* Den følgende streng representerer den mængde karakterer der er tilladt i et
  username eller domainname.  Den fortæller faktisk hvilke karakterer der ikke er tilladt. */
var validChars="\[^\\s" + specialChars + "\]"
/* Det følgende mønster godkendes hvis "user" strengen er er omgivet af anførselstegn (ellers
  er der ingen regler for hvilke tegn der er tilladt
  og hvilke der ikke er; alt kommer med). F.eks "jiminy cricket"@disney.com
  er en lovlig e-mail adresse. */
var quotedUser="(\"[^\"]*\")"
/* Det følgende godkender domains som er IP adresser,
  modsat symbolske navne.  f.eks. joe@[123.124.233.4] er en gyldig
  e-mail adresse. NOTE: De kantede parenteser er nødvendige. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* Den følgende streng representerer et "atom" (faktisk en serie af
    ikke-speciale tegn.) */
var atom=validChars + '+'
/* Den følgende streng representerer et ord i det typiske "username".
  F.eks, i john.doe@somewhere.com, john og doe er ord.
  Et ord er enten et "atom" eller en "quoted" streng. */
var word="(" + atom + "|" + quotedUser + ")"
// Følgende kode beskriver strukturen af brugeren
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* Det følgende kode beskriver strukturen af et normalt symbolsk
  domain, modsat ipDomainkoden, ovenover. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
/* Til sidst, skal vi prøve at finde ud af om den givede adresse er
  gyldig. */
/* Begynd med den grove kode til at opdele user@domain i
  forskellige stykker som er lette at analysere. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* For mange/få @'er eller noget; Faktisk, passer denne e-mail adresse
  ikke med de generalle typer af gyldige e-mail adresser. */
    alert("Email adressen er ugyldig (check @ og .'er)")
    return false
}
var user=matchArray[1]
var domain=matchArray[2]
// Se om "user" er gyldig
if (user.match(userPat)==null) {
        alert("Email: Dit brugernavn er ikke gyldig.")
    return false
}
/* hvis e-mail adressen er på en IP adresse (en modsætning til et symbolsk
  "host name") vær sikker på at IP adressen er gyldig. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // Dette er en IP adresse
      for (var i=1;i<=4;i++) {
        if (IPArray[i]>255) {
            alert("Email: IP adressens Destination er ugyldig!")
        return false
        }
    }
    return true
}
// Domain er et symbolisk navn
var domainArray=domain.match(domainPat)
if (domainArray==null) {
    alert("Email: Dit domain navn er ikke gyldigt.")
    return false
}
/* domain navn ser ud til at være gyldig, men vær sikker på at det ender med et
  tre-tegns ord (så som com, edu, gov) eller et to-tegns ord, som
  representerer land (dk, uk, nl), og at der er et "hostname" der representerer
  dette domain eller land. */
/* Nu er vi nødt til at opdele "domain" for at få et tal på hvor mange "atoms"
  det indeholder. */
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 ||
    domArr[domArr.length-1].length>3) {
  // adressen skal ende i et to-tegns eller tre-tegns ord.
  alert("Email-Adressen skal ende i et 3-tegns domain, eller 2-tegns land.")
  return false
}
// Vær sikker på at hostname indeholder domain.
if (len<2) {
  var errStr="Denne Email-adresse mangler et hostname!"
  alert(errStr)
  return false
}

return true;
}

function bdaycheck()
{
        w1 = document.myform.bday.value;

        wdd = parseInt(w1.substring(0,2), 10);
        wmm = parseInt(w1.substring(2,4), 10);
        wyy = w1.substring(4,8) - 0;

        wdato=checkdato(wdd,wmm,wyy);

        document.myform.bday.focus();
        switch (wdato) {
            case 1:
                alert("Fejl i dag");
                return false;
            case 2:
                alert("Fejl i måned");
                return false;
            case 3:
                alert("Fejl i år");
                return false;
            }
return true;
}
function datecheck (dd,mm,yy,fmt,sep) {

        var dfmt = fmt;
        if (fmt && (!(fmt == "YMD" || fmt == "DMY" || fmt == "MDY")))
                dfmt = "YMD";                // pt default format

        if (! (mm >= 1 && mm <= 12))
                return 2;                // ugyldig måned

        leap = 31;
        if (mm == 4 || mm == 6 || mm == 9 || mm == 11)
                leap = 30;

        if (! (yy >= 1900 && yy <= 2100))
                return 3;                // ugyldigt år

        if (mm == 2) {
                leap = 28;
                if (yy % 400 == 0)
                        leap = 29;
                else
                        if ((!(yy % 100 == 0)) && (yy % 4 == 0))
                                leap = 29;
        }

        if (! (dd >= 1 && dd <= leap))
                return 1;                // ugyldig dag

        normdato=new Date();
        normdato.setFullYear(yy);
        normdato.setMonth(mm-1);
        normdato.setDate(dd);
        normdato.setHours(0);
        normdato.setMinutes(0);
        normdato.setSeconds(0);

        if (dfmt == "YMD")
                normdato = yy + sep + mm + sep + dd;
        if (dfmt == "DMY")
                normdato = dd + sep + mm + sep + yy;
        if (dfmt == "MDY")
                normdato = mm + sep + dd + sep + yy;

        return normdato;
}

function phonecheck()
{
    v1 = document.myform.phone.value;
    if (v1.length < 4) {
        alert("For få cifre i telefonnummer.\nKrav om mindst 4!");
        document.myform.phone.focus();
        return false;
    }


    for (t=0; t<v1.length; t++) {
        v2 = v1.charAt(t);
        if (! (v2 >= "0" && v2 <= "9") ) {
            alert("Telefonnummer indeholder ulovligt tegn!")
            document.myform.phone.focus();
            return false;
        }
    }
return true;
}

function bingo();
{
    if (!emailcheck()) return false;
    if (!bdaycheck()) return false;
        if (!phonecheck()) return false;
        if (!namecheck()) return false;
    return true;
  }
//  End -->
</script>

</HEAD>
<BODY background=background.jpg>
<CENTER>
<FORM METHOD="POST" NAME="myform" onSubmit="return bingo();" ACTION="mailto:ronnij@mail1.stofanet.dk">
<P>
<B>Skriv venligst dit navn:
</B><INPUT NAME="name" size="30"> <BR>
<P>
<B>Din e-mail adresse:
</B><INPUT Name="email" size="30">
<P>
<B>Din fødselsdato:
</B><INPUT Name="bday" size="30">
<P>
<B>Dit telefonnummer:
</B><INPUT Name="phone" size="30">
<INPUT TYPE=submit VALUE="Send !!">
<INPUT TYPE=reset VALUE="Start forfra !">
</CENTER></FORM></BODY></HTML>
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 01:37 #9
hvilken fejl?
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 01:38 #10
Ah, fjern lige semikolon i

function bingo()
Avatar billede gecko Nybegynder
16. marts 2002 - 01:39 #11
ja det så jeg lige, men den validerer stadig ikke
Avatar billede gecko Nybegynder
16. marts 2002 - 01:40 #12
Gud hvor er det et helvede sådan noget !!!
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 01:43 #13
Jamen, men jeg fatter heller ikke hvorfor du finder dig i det :)

Og jeg forstår heller ikke hvorfor du ikke siger hvad fejlen er,
og hvad linie det er.

Du har vistnok noget med store og små bogstaver og en
af dine funktoner har en parameter på. Det skal vist lige passe sammen.
Avatar billede gecko Nybegynder
16. marts 2002 - 01:45 #14
jeg aner ikke hvad fejlen er, og slet ikke hvad linje
Avatar billede gecko Nybegynder
16. marts 2002 - 01:46 #15
alle funktionerne virker for sig selv
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 01:47 #16
Du er da vel ikke en af dem, der bruger IE til udvikling? Og som
ikke har indstillet den til at give fornuftige fejlbeskedder?

Ja, så har du det svært.

Drop IE. Brug NS6.2.
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 01:47 #17
"Du har vistnok noget med store og små bogstaver og en
af dine funktoner har en parameter på. Det skal vist lige passe sammen. "

kig lige på det
Avatar billede gecko Nybegynder
16. marts 2002 - 01:50 #18
Den giver normalt fejlbeskeder, men her render den bare igennem....!!!
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 01:52 #19
Ok - så giver jeg mig. Men tag og smid IE i skraldespanden. Den
er god nok til min svigermor, men ikke til personer, der vl kalde
sig udviklere.

Linien
  if (!emailcheck()) return false;
er der noget galt i - du kan sikkert selv se det.
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 01:55 #20
Forøvrigt er koden til din emailCheck funktion smask forkert.
De afviser "endelser" på 4 tegn, men man kan jo sagtens
hedder  cc@cc.name eller  uu@uu.info
Avatar billede gecko Nybegynder
16. marts 2002 - 02:00 #21
Det er rigtigt, det er lige kommet frem.

emailcheck er rettet.
det virker stadig ikke......det fungerer fint hvis jeg kun har en funktion...men ligeså snart de bliver samlet.....så !!!!!!
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 02:01 #22
...lige kommet frem...  ja, og derfor er din emailCheck forkert.

Men hvad har du rettet det til?
Avatar billede gecko Nybegynder
16. marts 2002 - 02:04 #23
4
Avatar billede gecko Nybegynder
16. marts 2002 - 02:05 #24
nåh...sorry
jeg har rettet det til
if (!emailcheck(emailstr)) return false;
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 02:08 #25
Nå, antallet. Jamen linien
  if (!emailcheck()) return false;
?

Jeg kan se der er en del flere fejl. Du vil se dem med det samme
i en ordentlig browser.

Hvordan tror du folk kan regne ud hvordan de skal skrive
deres fødselsdag?  "16. marts 2002"  giver en fejl, men jeg
ville da godt nok blive fornærmet og at få en af de fejlbeskedder
i hovedet.

Et generelt godt råd er ikke at checke mere end højst nødvendigt.
For en emailadresse ville jeg fx checke der var en @ - ikke mere.
Jeg kan jo alligevel ikke checke den er korrekt.

Men hyg dig - jeg skal sove.
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 02:09 #26
if (!emailcheck(emailstr)) return false;

Men hvor kommer emailstr fra ? Er det ikke et felt i formen ?

(godnat)
Avatar billede erikjacobsen Ekspert
16. marts 2002 - 02:11 #27
...og din funktion hedder altså ikke emailcheck
Avatar billede gecko Nybegynder
16. marts 2002 - 02:12 #28
godnat og tak for hjælpen

---det er ikke mig selv der vil checke alle de felter, det er en projektopgave !!!
Avatar billede gecko Nybegynder
16. marts 2002 - 02:34 #29
fandt selv fejlen, langt om længe !!!!
Avatar billede bidetus Nybegynder
16. marts 2002 - 02:53 #30
... LoL
Avatar billede proboss Nybegynder
16. marts 2002 - 12:13 #31
der ligger et validerings værktøj her www.solutions2all.dk/tools.asp
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