Avatar billede kimborg Nybegynder
16. marts 2009 - 13:56 Der er 14 kommentarer og
1 løsning

Valideringsproblem

Hejsa

Jeg har funktionen nedenfor og det virker fint, dog ville det være rigtig smart, hvis den sidste del (kontrol af password) først bliver "kørt", hvis der ikke er andre fejl, men hvordan gør jeg lige det??

function validering()
  {
  error = 0;
  if((document.forms[0].Fornavn.value=='') && (error==0)) 
  {
    alert('Feltet Fornavn skal udfyldes!');
    document.forms[0].Fornavn.focus();
    error = 1;
  }
  if((document.forms[0].Efternavn.value=='') && (error==0)) 
  {
    alert('Feltet Efternavn skal udfyldes!');
    document.forms[0].Efternavn.focus();
    error = 1;
  }
  if((document.forms[0].Firma.value=='') && (error==0)) 
  {
    alert('Feltet Firma skal udfyldes!');
    document.forms[0].Firma.focus();
    error = 1;
  }
  if((document.forms[0].Adresse.value=='') && (error==0)) 
  {
    alert('Feltet Adresse skal udfyldes!');
    document.forms[0].Adresse.focus();
    error = 1;
  }
  if((document.forms[0].Nr.value=='') && (error==0)) 
  {
    alert('Feltet Nr skal udfyldes!');
    document.forms[0].Nr.focus();
    error = 1;
  }
if ((document.forms[0].Postnr.value.length != 4))
  {
    mesg = "Du har indtastet " + document.forms[0].Postnr.value.length + " cifre\n"
    mesg = mesg + "Men du skal indtaste 4 cifre, hverken færre eller flere!."
    alert(mesg);
    document.forms[0].Postnr.focus();
    error = 1;
  }
if ((document.forms[0].Mobil.value.length != 8))
  {
    mesg = "Du har indtastet " + document.forms[0].Mobil.value.length + " cifre\n"
    mesg = mesg + "Men du skal indtaste 8 cifre, hverken færre eller flere!."
    alert(mesg);
    document.forms[0].Mobil.focus();
    error = 1;
  }
  if((document.forms[0].Email.value=='') && (error==0)) 
  {
    alert('Feltet Email skal udfyldes!');
    document.forms[0].Email.focus();
    error = 1;
  }
if ((document.forms[0].Ftekst.value.length < 50) || (document.forms[0].Ftekst.value.length > 150))
  {
    mesg = "Du har indtastet " + document.forms[0].Ftekst.value.length + " karakter\n"
    mesg = mesg + "Du skal indtaste mellem 50 and 150 karakter."
    alert(mesg);
    document.forms[0].Ftekst.focus();
    error = 1;
  }
  if((document.forms[0].password.value=='') && (error==0)) 
  {
    alert('Feltet Password skal udfyldes!');
    document.forms[0].password.focus();
    error = 1;
  }
  if (document.forms[0].password.value != document.forms[0].bekraeft.value)
  {
    alert('Password skal være ens i begge felter!');
    document.forms[0].bekraeft.focus();
    error = 1;
  }
  if(error == 0)
  document.forms[0].submit();
  }
Avatar billede chrisbuchholz Nybegynder
16. marts 2009 - 15:24 #1
Du isolere bare password valideringen og laver en ramme omkring den der hedder "at hvis der ikke er andre fejl, tjek password".

F.eks:

if(error == 0) {
if(document.forms[0].password.value != document.forms[0].bekraeft.value) {
  alert('Password skal være ens i begge felter!');
  document.forms[0].bekraeft.focus();
  error = 1;
} else {
  document.forms[0].submit();
}
}
Avatar billede chrisbuchholz Nybegynder
16. marts 2009 - 15:26 #2
Udover det, bør du huske på at javascript validering ikke er sikkerhed. Blot en feature til lige at tage det værste, men der er intet sikkerheds aspekt i javascript validering _overhovedet_!!!
Avatar billede kimborg Nybegynder
16. marts 2009 - 16:04 #3
Tak for svar, men nu virker funktionen slet ikke... hvad gør jeg forkert?

function validering()
  {
  error = 0;
  if((document.forms[0].Fornavn.value=='') && (error==0)) 
  {
    alert('Feltet Fornavn skal udfyldes!');
    document.forms[0].Fornavn.focus();
    error = 1;
  }
  if((document.forms[0].Efternavn.value=='') && (error==0)) 
  {
    alert('Feltet Efternavn skal udfyldes!');
    document.forms[0].Efternavn.focus();
    error = 1;
  }
  if((document.forms[0].Firma.value=='') && (error==0)) 
  {
    alert('Feltet Firma skal udfyldes!');
    document.forms[0].Firma.focus();
    error = 1;
  }
  if((document.forms[0].Adresse.value=='') && (error==0)) 
  {
    alert('Feltet Adresse skal udfyldes!');
    document.forms[0].Adresse.focus();
    error = 1;
  }
  if((document.forms[0].Nr.value=='') && (error==0)) 
  {
    alert('Feltet Nr skal udfyldes!');
    document.forms[0].Nr.focus();
    error = 1;
  }
  if ((document.forms[0].Postnr.value.length != 4))
  {
    mesg = "Du har indtastet " + document.forms[0].Postnr.value.length + " cifre\n"
    mesg = mesg + "Men du skal indtaste 4 cifre, hverken færre eller flere!."
    alert(mesg);
    document.forms[0].Postnr.focus();
    error = 1;
  }
  if ((document.forms[0].Mobil.value.length != 8))
  {
    mesg = "Du har indtastet " + document.forms[0].Mobil.value.length + " cifre\n"
    mesg = mesg + "Men du skal indtaste 8 cifre, hverken færre eller flere!."
    alert(mesg);
    document.forms[0].Mobil.focus();
    error = 1;
  }
  if((document.forms[0].Email.value=='') && (error==0)) 
  {
    alert('Feltet Email skal udfyldes!');
    document.forms[0].Email.focus();
    error = 1;
  }
  if ((document.forms[0].Ftekst.value.length < 50) || (document.forms[0].Ftekst.value.length > 150))
  {
    mesg = "Du har indtastet " + document.forms[0].Ftekst.value.length + " karakter\n"
    mesg = mesg + "Du skal indtaste mellem 50 and 150 karakter."
    alert(mesg);
    document.forms[0].Ftekst.focus();
    error = 1;
  }
  if((document.forms[0].password.value=='') && (error==0)) 
  {
    alert('Feltet Password skal udfyldes!');
    document.forms[0].password.focus();
    error = 1;
  }
if(error == 0) {
if(document.forms[0].password.value != document.forms[0].bekraeft.value) {
  alert('Password skal være ens i begge felter!');
  document.forms[0].bekraeft.focus();
  error = 1;
} else {
  document.forms[0].submit();
}
}
Avatar billede chrisbuchholz Nybegynder
16. marts 2009 - 16:07 #4
Well, det ved jeg ikke rigtigt, udover at du skal fjerne den første password-if-sætning der er ovenover det nye du satte ind. Så skulle det gerne virke når den er fjernet.

FORKERT:

  if((document.forms[0].password.value=='') && (error==0))
  {
    alert('Feltet Password skal udfyldes!');
    document.forms[0].password.focus();
    error = 1;
  }
if(error == 0) {
if(document.forms[0].password.value != document.forms[0].bekraeft.value) {
  alert('Password skal være ens i begge felter!');
  document.forms[0].bekraeft.focus();
  error = 1;
} else {
  document.forms[0].submit();
}
}

RIGTIGT:

if(error == 0) {
if(document.forms[0].password.value != document.forms[0].bekraeft.value) {
  alert('Password skal være ens i begge felter!');
  document.forms[0].bekraeft.focus();
  error = 1;
} else {
  document.forms[0].submit();
}
}
Avatar billede kimborg Nybegynder
16. marts 2009 - 16:31 #5
Det virker heller ikke.... jeg fatter det ikke

function validering()
  {
  error = 0;
  if((document.forms[0].Fornavn.value=='') && (error==0)) 
  {
    alert('Feltet Fornavn skal udfyldes!');
    document.forms[0].Fornavn.focus();
    error = 1;
  }
  if((document.forms[0].Efternavn.value=='') && (error==0)) 
  {
    alert('Feltet Efternavn skal udfyldes!');
    document.forms[0].Efternavn.focus();
    error = 1;
  }
  if((document.forms[0].Firma.value=='') && (error==0)) 
  {
    alert('Feltet Firma skal udfyldes!');
    document.forms[0].Firma.focus();
    error = 1;
  }
  if((document.forms[0].Adresse.value=='') && (error==0)) 
  {
    alert('Feltet Adresse skal udfyldes!');
    document.forms[0].Adresse.focus();
    error = 1;
  }
  if((document.forms[0].Nr.value=='') && (error==0)) 
  {
    alert('Feltet Nr skal udfyldes!');
    document.forms[0].Nr.focus();
    error = 1;
  }
  if((document.forms[0].Postnr.value.length != 4))
  {
    mesg = "Du har indtastet " + document.forms[0].Postnr.value.length + " cifre\n"
    mesg = mesg + "Men du skal indtaste 4 cifre, hverken færre eller flere!."
    alert(mesg);
    document.forms[0].Postnr.focus();
    error = 1;
  }
  if((document.forms[0].Mobil.value.length != 8))
  {
    mesg = "Du har indtastet " + document.forms[0].Mobil.value.length + " cifre\n"
    mesg = mesg + "Men du skal indtaste 8 cifre, hverken færre eller flere!."
    alert(mesg);
    document.forms[0].Mobil.focus();
    error = 1;
  }
  if((document.forms[0].Email.value=='') && (error==0)) 
  {
    alert('Feltet Email skal udfyldes!');
    document.forms[0].Email.focus();
    error = 1;
  }
  if((document.forms[0].Ftekst.value.length < 50) || (document.forms[0].Ftekst.value.length > 150))
  {
    mesg = "Du har indtastet " + document.forms[0].Ftekst.value.length + " karakter\n"
    mesg = mesg + "Du skal indtaste mellem 50 and 150 karakter."
    alert(mesg);
    document.forms[0].Ftekst.focus();
    error = 1;
  }
  if(error == 0) {
  if(document.forms[0].password.value != document.forms[0].bekraeft.value)
  {
    alert('Password skal være ens i begge felter!');
    document.forms[0].bekraeft.focus();
    error = 1;
  }
  else {
    document.forms[0].submit();
}
}
Avatar billede chrisbuchholz Nybegynder
16. marts 2009 - 16:36 #6
Kom med et link til siden hvor det er på, så jeg kan se det i aktion.
Avatar billede kimborg Nybegynder
16. marts 2009 - 19:15 #7
Det kan jeg ikke da det er lukket system, jeg har koden, hvis det kan hjæpe?
Avatar billede chrisbuchholz Nybegynder
16. marts 2009 - 19:29 #8
Det ville være nemmere hvis man kunne se koden i funktion...

Ellers må du prøve at forklare hvad der ikke virker, hvornår det ikke virker, hvad der sker, hvad du gør for at det ikke virker. Så mange detaljer som muligt!
Avatar billede kimborg Nybegynder
16. marts 2009 - 19:49 #9
Jeg har testet lidt på det og det er udelukkende følgende som får funktionen til at fejle, der må være en syntaxfejl eller lign., jeg kan bare ikke finde den :(

  if(error==0)
  {
    if((document.forms[0].password.value != document.forms[0].bekraeft.value))
    {
      alert('Password skal være ens i begge felter!');
      document.forms[0].bekraeft.focus();
      error = 1;
    }
  else
  {
    document.forms[0].submit();
}
}
Avatar billede kimborg Nybegynder
16. marts 2009 - 20:02 #10
Hej igen

Jeg har nu fået det til at virke på en lidt anden måde, men det virker :)

Tak for hjælpen, smid et svar og du får point.


function validering()
  {
  error = 0;
  if((document.forms[0].Fornavn.value=='') && (error==0)) 
  {
    alert('Feltet Fornavn skal udfyldes!');
    document.forms[0].Fornavn.focus();
    error = 1;
  }
  if((document.forms[0].Efternavn.value=='') && (error==0)) 
  {
    alert('Feltet Efternavn skal udfyldes!');
    document.forms[0].Efternavn.focus();
    error = 1;
  }
  if((document.forms[0].Firma.value=='') && (error==0)) 
  {
    alert('Feltet Firma skal udfyldes!');
    document.forms[0].Firma.focus();
    error = 1;
  }
  if((document.forms[0].Adresse.value=='') && (error==0)) 
  {
    alert('Feltet Adresse skal udfyldes!');
    document.forms[0].Adresse.focus();
    error = 1;
  }
  if((document.forms[0].Fadresse.value=='') && (error==0)) 
  {
    alert('Feltet Adresse skal udfyldes!');
    document.forms[0].Fadresse.focus();
    error = 1;
  }
  if((document.forms[0].Nr.value=='') && (error==0)) 
  {
    alert('Feltet Nr skal udfyldes!');
    document.forms[0].Nr.focus();
    error = 1;
  }
  if((document.forms[0].Fnr.value=='') && (error==0)) 
  {
    alert('Feltet Nr skal udfyldes!');
    document.forms[0].Fnr.focus();
    error = 1;
  }
  if ((document.forms[0].Postnr.value.length != 4) && (error==0)) 
  {
    mesg = "Du har indtastet " + document.forms[0].Postnr.value.length + " cifre som postnr.\n"
    mesg = mesg + "Men du skal indtaste 4 cifre, hverken færre eller flere!."
    alert(mesg);
    document.forms[0].Postnr.focus();
    error = 1;
  }
  if ((document.forms[0].FPostnr.value.length != 4) && (error==0)) 
  {
    mesg = "Du har indtastet " + document.forms[0].FPostnr.value.length + " cifre som postnr.\n"
    mesg = mesg + "Men du skal indtaste 4 cifre, hverken færre eller flere!."
    alert(mesg);
    document.forms[0].FPostnr.focus();
    error = 1;
  }
  if ((document.forms[0].Mobil.value.length != 8) && (error==0))
  {
    mesg = "Du har indtastet " + document.forms[0].Mobil.value.length + " cifre som mobilnr.\n"
    mesg = mesg + "Men du skal indtaste 8 cifre, hverken færre eller flere!."
    alert(mesg);
    document.forms[0].Mobil.focus();
    error = 1;
  }
  if((document.forms[0].Email.value=='') && (error==0)) 
  {
    alert('Feltet Email skal udfyldes!');
    document.forms[0].Email.focus();
    error = 1;
  }
  if((document.forms[0].Ftekst.value.length < 50) || (document.forms[0].Ftekst.value.length > 150) && (error==0))
  {
    mesg = "Du har indtastet " + document.forms[0].Ftekst.value.length + " karakter\n"
    mesg = mesg + "Du skal indtaste mellem 50 and 150 karakter."
    alert(mesg);
    document.forms[0].Ftekst.focus();
    error = 1;
  }
  if((document.forms[0].password.value=='') && (error==0)) 
  {
    alert('Feltet password skal udfyldes!');
    document.forms[0].password.focus();
    error = 1;
  }
  if((document.forms[0].password.value != document.forms[0].bekraeft.value) && (error==0)) 
  {
    alert('Password skal være ens i begge felter!');
    document.forms[0].bekraeft.focus();
    error = 1;
  }
  if(error == 0)
  document.forms[0].submit();
  }
Avatar billede chrisbuchholz Nybegynder
16. marts 2009 - 20:05 #11
Først og fremmest bør den se sådan her ud:

if(error == 0 ) {
    if(document.forms[0].password.value != document.forms[0].bekraeft.value) {
        alert('Password skal være ens i begge felter!');
        document.forms[0].bekraeft.focus();
    } else {
        document.forms[0].submit();
    }
}

For det andet, så er du nød til at fortælle hvilken fejl du får.
Avatar billede chrisbuchholz Nybegynder
16. marts 2009 - 20:07 #12
Det er jo næsten det samme som du havde før, og det løser jo ikke det resultat du gik efter, men det må du selv om.

Og nej tak til point.
Avatar billede kimborg Nybegynder
16. marts 2009 - 20:13 #13
Jeg manglede " && (error==0)) " i nogle if sætninger, derfor forsatte funktionen med at se efter andre fejl i stedet for at springe dem over da error vil være =1 efter den første fejl.

Det er ihvertfald min konklusion.
Avatar billede chrisbuchholz Nybegynder
16. marts 2009 - 21:00 #14
Du behøver ikke at indkapsle "()" der hvor du har gjort det.

if(document.forms[0].password.value != document.forms[0].bekraeft.value && error==0)

ovenstående betyder det præcist samme, som med din overflod af unødvendige paranteser:P
Avatar billede kimborg Nybegynder
19. marts 2009 - 18:12 #15
Lukker....
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