Avatar billede mr_bula Nybegynder
15. oktober 2005 - 15:29 Der er 9 kommentarer og
1 løsning

Validering af form felt - Sender hvis sidste felt er korrekt

Hejsa....

Har siddet i mange timer og bøvlet med noget validering af en formular.
Den fungere stort set fint, men der er en fejl! Hvis bare det sidste felt (byNavn) i formularen er rigtigt så "submitter" den. Kan godt se det i koden, men ved ikke hvad jeg skal/kan ændre for at den kun sender når ALLE felter er udfyldet korrekt.


function validering()
  {
  error = 0;
  if((document.forms[0].ditNavn.value=='') && (error==0)) 
  {       
    alert('Navn skal udfyldes');
    document.forms[0].ditNavn.focus();
    error = 1;       
  }
  error = 0;
  if((document.forms[0].ditEfternavn.value=='') && (error==0)) 
  {       
    alert('Efternavn skal udfyldes');
    document.forms[0].ditEfternavn.focus();
    error = 1;       
  }
  error = 0;
  if((document.forms[0].dinAdresse.value=='') && (error==0)) 
  {       
    alert('Adresse skal udfyldes');
    document.forms[0].dinAdresse.focus();
    error = 1;       
  }
  placering=0;
  tekst=(document.forms[0].email.value).toLowerCase();
  placering=tekst.indexOf("@");
  if(tekst ==""){
    alert ("Der skal indtaste en email adresse");
    error = 1;
  }
  else{
    tegn=tekst.indexOf(" ");
    if(tegn!=-1){
      alert ("Der må ikke være mellemrum i email adressen");
      error = 1;
    }
    else{
      if (tekst.indexOf("æ")!=-1 || tekst.indexOf("ø")!=-1 || tekst.indexOf("å")!=-1 ||
        tekst.indexOf("Æ")!=-1 || tekst.indexOf("Ø")!=-1 || tekst.indexOf("Å")!=-1 ||
        tekst.indexOf(";")!=-1 || tekst.indexOf(",")!=-1){
        alert ("Der er ulovlige tegn i email adressen. Må ikke indeholde: æ ø å Æ Ø Å , ;");
        error = 1;
      }
    else{
      if (placering<1 || tekst.length<=(placering+1)){
        alert ("Email adressen er forkert - forsøg igen");
        error = 1;
      }

    }
  }
}
error = 0;

  if((document.forms[0].byNavn.value=='') && (error==0)) 
  {       
    alert('Du skal vælge en by!');
    document.forms[0].byNavn.focus();
    error = 1;       
  }
 
if(error == 0)
document.forms[0].submit();   
}
Avatar billede horsmark Nybegynder
15. oktober 2005 - 15:42 #1
start lige med følgende:

<form onsubmit="return validering(this)">

så er det nemmere at overskue som dette

function validering(frm){
...kode..

if( frm.ditEfternavn.value=='' && error==0 )
  {     
    alert('Efternavn skal udfyldes');
    frm.ditEfternavn.focus();
    error = 1;     
  }

...kode...
}
Avatar billede roenving Novice
15. oktober 2005 - 15:42 #2
Hrm, en elendig måde at validere på, prøv i stedet:

<form ... onsubmit="return validering(this);">

<script typ="text/javascript">
function validering(f){
  if(f.ditNavn.value == ""){
    alert("Dit navn skal udfyldes");
    f.ditNavn.focus();
    return false;
  }

  if(f.ditEfternavn.value==''){
    alert('Efternavn skal udfyldes');
    f.ditEfternavn.focus();
    return false;
  }

  if(f.dinAdresse.value==''){
    alert('Adresse skal udfyldes');
    f.dinAdresse.focus();
    return false;
  }

  if(f.email.value==''){
    alert('Email-adresse skal udfyldes');
    f.email.focus();
    return false;
  }

  if(!f.email.value.match(/^.*?@\w[\w.-]*\.[a-z]{2,6}$/i)){
    alert('Email-adresse skal udfyldes med en gyldig adresse');
    f.email.focus();
    return false;
  }

  if(f.byNavn.value==''){
    alert('Bynavn skal udfyldes');
    f.byNavn.focus();
    return false;
  }

  return true;
}
</script>
Avatar billede horsmark Nybegynder
15. oktober 2005 - 15:43 #3
OG istedet for alle de dersens error variabler så lav følgende

return false
Avatar billede roenving Novice
15. oktober 2005 - 15:44 #4
PS. Det er uheldigvis en af de mest udbredte scripts fra html.dk, og det lever fuldt op til standarden på det site iøvrigt ...

-- det er elendigt, og i langt de fleste tilfælde også håbløst besværligt at vedligeholde ,-(
Avatar billede horsmark Nybegynder
15. oktober 2005 - 15:44 #5
.oO( horsmark og roenving kører mental extreme programming ? )
Avatar billede mr_bula Nybegynder
15. oktober 2005 - 16:07 #6
Først og fremmest tak for de hurtige svar, det var fornemt.

- Selve <form ....> er på selve siden hvor jeg så linker til en js fil med funktionen validering i.

- Kan godt være det er en elendig måde at gøre det på men det var lige hvad jeg kunne finde.

- ROENVING; har prøvet din kode men der sender den hver gang! Hvad kan jeg gøre forkert
Avatar billede mr_bula Nybegynder
15. oktober 2005 - 16:10 #7
Har fundet fejlen
Avatar billede mr_bula Nybegynder
15. oktober 2005 - 16:13 #8
Og det fungere perfekt. Det var sådan jeg havde det i tankerne at det skulle være fra starten af, men kunne ikke finde ud af det, så det blev på den anden ELENDIGE måde ;)
Men nu spiller det. Fejlen før var at jeg manglede en "this".

Kom med et svar og du skal få dine fortjente point
Avatar billede roenving Novice
15. oktober 2005 - 16:16 #9
Velbekomme '-)
Avatar billede roenving Novice
15. oktober 2005 - 16:43 #10
-- og tak for point ;~}
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