Avatar billede kane Juniormester
28. marts 2005 - 14:25 Der er 15 kommentarer og
1 løsning

validere email feltet

Jeg har denne simple validering af nogle felter, men jeg ville gerne have en validering af email med, så man får en rigtigt email.
Er der en der kan hjælpe mig?


<script type="text/javascript">

function validering()
  {
  error = 0;

  if((document.forms[0].Navn.value=='') && (error==0)) 
  {       
    alert('Du skal udfylde feltet med dit navn!');
    document.forms[0].Navn.focus();
    error = 1;       
  }

  if((document.forms[0].Firma.value=='') && (error==0)) 
  {       
    alert('Du skal udfylde feltet med et firma navn!');
    document.forms[0].Firma.focus();
    error = 1;       
  }   
 
  if((document.forms[0].cvr.value=='') && (error==0)) 
  {       
    alert('Du skal udfylde feltet med et CVR nummer!');
    document.forms[0].cvr.focus();
    error = 1;       
  }   
    if((document.forms[0].Adresse.value=='') && (error==0)) 
  {       
    alert('Du skal udfylde feltet med en Adresse!');
    document.forms[0].Adresse.focus();
    error = 1;       
  }
    if((document.forms[0].Post_by.value=='') && (error==0)) 
  {       
    alert('Du skal udfylde feltet med et Postnummer og en by!');
    document.forms[0].Post_by.focus();
    error = 1;       
  }
  if((document.forms[0].Telefon.value=='') && (error==0)) 
  {       
    alert('Du skal udfylde feltet med et Telefon nummer!');
    document.forms[0].Telefon.focus();
    error = 1;       
  }
   

  if(error == 0)
  document.forms[0].submit();   
  }

</script>
Avatar billede barklund Nybegynder
28. marts 2005 - 14:32 #1
En hurtig men bestemt ikke perfekt validering kan laves som:

if(!document.forms[0].Email.value.match(/[a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,6}/i) && (error==0))
  {     
    alert('Du skal udfylde feltet med dit email!');
    document.forms[0].Email.focus();
    error = 1;     
  }

Men det kan selvfølgelig udvides alt efter hvor god en validering du vil have. Den perfekte validering er dog forfærdeligt besværlig!

--
Morten Barklund
Avatar billede kane Juniormester
28. marts 2005 - 14:42 #2
den er fin nok til mig.
En anden ting (hvis du gider) felter telefon skal kun kunne indeholde tal, hvordan vil det se ud?

if((document.forms[0].Telefon.value.macth(/[0-9]\&&(error==0))

hvad betyder de (/ <-start? \<-slut?
Avatar billede barklund Nybegynder
28. marts 2005 - 14:47 #3
Nej, du starter og slutter med en /:

if(!document.forms[0].Telefon.value.match(/^[0-9]+$/) && (error==0))

Og derudover skal din email-tjek nok også lige have ^ forrest og $ bagerst:

if(!document.forms[0].Email.value.match(/^[a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,6}$/i) && (error==0))

--
Morten Barklund
Avatar billede kane Juniormester
28. marts 2005 - 14:51 #4
cool takker
Smid et svar
Avatar billede roenving Novice
28. marts 2005 - 15:00 #5
-- og den validering, du bruger (som f.eks. findes hos html.dk !-), er i bedste fald uhensigtsmæssig, for det kan gøres elegantere, hvis ikke man ønsker at opsamle en samlet fejlmeddelese med noget om hver eneste fejl !o]
Avatar billede roenving Novice
28. marts 2005 - 15:10 #6
Så jeg ville gøre ca. sådan:

<script type="text/javascript">
function validering(f){
  if(f.Navn.value==''){
    alert('Du skal udfylde feltet med dit navn!');
    f.Navn.focus();
    return false;
  }
  if(f.Firma.value==''){
    alert('Du skal udfylde feltet med et firma navn!');
    f.Firma.focus();
    return false;
  }
  if(f.cvr.value==''){
    alert('Du skal udfylde feltet med et CVR nummer!');
    f.cvr.focus();
    return false;
  }
    if(f.Adresse.value==''){
    alert('Du skal udfylde feltet med en Adresse!');
    f.Adresse.focus();
    return false;
  }
    if(f.Post_by.value==''){
    alert('Du skal udfylde feltet med et Postnummer og en by!');
    f.Post_by.focus();
    return false;
  }
  if(!f.Telefon.value.match(/^\d{8,}$/){
    alert('Du skal udfylde feltet med et Telefon nummer!');
    f.Telefon.focus();
    return false;
  }
  if(!f.Email.value.match(/^.+@\w[\w\.-]*\.[a-z]{2,6}$/){
    alert('Du skal udfylde feltet med et Email-adresse!');
    f.Email.focus();
    return false;
  }
  return true;
}

</script>

<form action="..." method="post" onsubmit="return validering(this);">
...
</form>

-- bemærk også, at jeg helt har udeladt en egentlig validering af hvad der står foran @-tegnet, for det er faktisk regler, som laves på den enkelte mailserver, så der er alt de facto tilladt !-)
Avatar billede roenving Novice
28. marts 2005 - 15:13 #7
-- og telefon-nummer-testeren burde måske ikke have start-tegnet med, da der måske kan komme udenlandske numre angivet f.eks. med et +45, så:

  if(!f.Telefon.value.match(/\d{8,}$/){
    alert('Du skal udfylde feltet med et Telefon nummer!\n(Mindst 8 cifre uden mellemrum)');
Avatar billede kane Juniormester
28. marts 2005 - 15:22 #8
det ser også pænt ud, men den virker ikke.

Trykker jeg send, så går den igennem uden noget i felterne.
Avatar billede roenving Novice
28. marts 2005 - 15:25 #9
Har du husket, at:

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

-- og:

function validering(f){

?-)
Avatar billede roenving Novice
28. marts 2005 - 15:26 #10
-- når det laves sådan, kan det nemlig kun ske ved at medsende en reference til formen, og fra formens onsubmit-event !-)

-- det kan faktisk godt være, at html.dks eksempel netop bygger på, at det er et kald, som sker fra en-eller-anden knap på formen !o]
Avatar billede kane Juniormester
28. marts 2005 - 15:28 #11
<form  action="save_info.php" method="post" onsubmit="return validering(this);">

<script type="text/javascript">
function validering(f){

  if(f.Navn.value==''){
    alert('Du skal udfylde feltet med dit navn!');
    f.Navn.focus();
    return false;
  }
  if(f.Firma.value==''){
    alert('Du skal udfylde feltet med et firma navn!');
    f.Firma.focus();
    return false;
  }
  if(f.cvr.value==''){
    alert('Du skal udfylde feltet med et CVR nummer!');
    f.cvr.focus();
    return false;
  }
    if(f.Adresse.value==''){
    alert('Du skal udfylde feltet med en Adresse!');
    f.Adresse.focus();
    return false;
  }
    if(f.Post_by.value==''){
    alert('Du skal udfylde feltet med et Postnummer og en by!');
    f.Post_by.focus();
    return false;
  }
  if(!f.Telefon.value.match(/^\d{8,}$/){
    alert('Du skal udfylde feltet med et Telefon nummer!');
    f.Telefon.focus();
    return false;
  }
  if(!f.Email.value.match(/^.+@\w[\w\.-]*\.[a-z]{2,6}$/){
    alert('Du skal udfylde feltet med et Email-adresse!');
    f.Email.focus();
    return false;
  }
  return true;
}

</script>
Avatar billede roenving Novice
28. marts 2005 - 15:37 #12
Får du ingen alerts ?-)
Avatar billede kane Juniormester
28. marts 2005 - 15:38 #13
nej

men ok, jeg holder mig til den jeg havde før.
Ellers tak for hjælpen
Avatar billede barklund Nybegynder
28. marts 2005 - 15:50 #14
Well, jeg kaster et svar - selvom jeg nu holder med roenving og hans argumentation :)
Avatar billede barklund Nybegynder
29. marts 2005 - 10:14 #15
Tark for points ;)
Avatar billede lester_dk Nybegynder
07. april 2006 - 09:18 #16
Jeg forsøgte at bruge denne validering også... og ja.. den trigger simpelthen ikke før man fjerner email-valideringen....  har også fjernet tlf validering, da jeg ikke skulle bruge den.
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