Avatar billede saxtus Nybegynder
13. august 2003 - 14:06 Der er 20 kommentarer og
1 løsning

Validering af E-mails

Jeg sidder og roder med noget validering af e-mails, men synes ikke at jeg kan få det til at virke rigtigt.
Jeg bruger den validering som jeg har fundet inde hos www.html.dk men synes ikke at den virker helt 100%. Den er god nok til at tage ÆØÅ og huske på at der skal være @ og ingen mellemrum, men den tager ikke højde for at der skal være et punktum et sted efter @-et og så et stykke tekst mere.

det script jeg bruger ser sådan her ud


function validering()
  {
  error = 0;

  placering=0;
  tekst=(document.forms[0].email.value).toLowerCase();
  placering=tekst.indexOf("@");
  if(tekst ==""){
    alert ("Der skal stå en e-post adresse i tekst feltet");
    error = 1;
  }
  else{
    tegn=tekst.indexOf(" ");
    if(tegn!=-1){
      alert ("Der må ikke være mellemrum i 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 adressen. Må ikke indeholde: æ ø å Æ Ø Å , ;");
        error = 1;
      }
    else{
      if (placering<1 || tekst.length<=(placering+1)){
        alert ("e-post adressen er forkert - forsøg igen");
        error = 1;
      }
    }
  }
}
if(error == 0)
document.forms[0].submit();   
}

// Slut -->
</script>
Avatar billede roenving Novice
13. august 2003 - 14:15 #1
var regexp = /^[\w\.\-_]+@[\w\-_]+\.[\w\.\-_]+$/i;
    if (!regexp.test(fld.value)){alert("Fejl i email");return false;};
Avatar billede saxtus Nybegynder
13. august 2003 - 14:32 #2
hvordna vil det så se ud i kode i stedet for det jeg har skrevet, har set den del kode før, men ved ikke hvordan den skal sættes ind. Den skal samtidig kontorlere at der bliver skrevet i feltet
Avatar billede saxtus Nybegynder
13. august 2003 - 14:35 #3
Mit samlede script ser sådan her ud

<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].adresse.value=='') && (error==0)) 
  {       
    alert('Du skal udfylde feltet med din adresse!');
    document.forms[0].adresse.focus();
    error = 1;       
  }


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


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

  placering=0;
  tekst=(document.forms[0].mail.value).toLowerCase();
  placering=tekst.indexOf("@");
  if(tekst ==""){
    alert ("Der skal stå en e-mail adresse i tekst feltet");
    error = 1;
  }
  else{
    tegn=tekst.indexOf(" ");
    if(tegn!=-1){
      alert ("Der må ikke være mellemrum i 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 adressen. Må ikke indeholde: æ ø å Æ Ø Å , ;");
        error = 1;
      }
    else{
      if (placering<1 || tekst.length<=(placering+1)){
        alert ("e-post adressen er forkert - forsøg igen");
        error = 1;
      }
    }
  }
}



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


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

</script>
Avatar billede roenving Novice
13. august 2003 - 14:55 #4
Jeg kigger lige på det, men først vil jeg lige sige, at det er en langsommelig metode, som bruges ...

Hvis du vil give folk en samlet oversigt over fejl er der ide i at validere alle felter på en form, men når du som her placerer fokus i feltet med fejl, kan folk blive sendt retur adskillige gange -- og nok så forvirrende til feltet med den _sidste_ fejl først !-)

Gør hellere sådan:

<form name="minForm" action="dinSide" method="post" onsubmit="return validering();">

-- og så ændrer jeg lige i validerings-funktionen, så den passer til !-)
Avatar billede roenving Novice
13. august 2003 - 15:01 #5
Nu har jeg ikke lige testet (jeg gad ikke opstille formen !-), men 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.adresse.value=='')    {       
    alert('Du skal udfylde feltet med din adresse!');
    f.adresse.focus();
    retrun false;
  }

  if(f.post.value=='')    {       
    alert('Du skal udfylde feltet med dit post nr.!');
    f.post.focus();
    return false;
  }

  if(f.by.value=='')    {       
    alert('Du skal udfylde feltet med din by!');
    f.by.focus();
    return false;
  }

  var regexp = /^[\w\.\-_]+@[\w\-_]+\.[\w\.\-_]+$/i;
  tekst=f.mail.value.toLowerCase();
  if (!regexp.test(tekst){
      alert ("Der skal stå en gyldig e-mail adresse i tekst feltet");
      return false;};
  }

  if(f.password1.value=='') 
  {       
    alert('Du skal udfylde feltet med dit password!');
    f.password1.focus();
    return fasle;
  }
}
</script>


Og så:

<form name="minForm" action="dinSide" method="post" onsubmit="return validering(this);">
Avatar billede saxtus Nybegynder
13. august 2003 - 15:19 #6
Jeg har lige testet det, og det ser detsvære ikke ud til at virke :(
Avatar billede saxtus Nybegynder
13. august 2003 - 15:29 #7
nu prøver jeg lige at sætte både scriptet og formen ind, kan jo være at jeg har lavet en fejl et helt andet sted

<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.adresse.value=='')    {       
    alert('Du skal udfylde feltet med din adresse!');
    f.adresse.focus();
    retrun false;
  }

  if(f.post.value=='')    {       
    alert('Du skal udfylde feltet med dit post nr.!');
    f.post.focus();
    return false;
  }

  if(f.by.value=='')    {       
    alert('Du skal udfylde feltet med din by!');
    f.by.focus();
    return false;
  }

  var regexp = /^[\w\.\-_]+@[\w\-_]+\.[\w\.\-_]+$/i;
  tekst==f.mail.value.toLowerCase();
  if (!regexp.test(tekst){
      alert ("Der skal stå en gyldig e-mail adresse i tekst feltet");
      return false;};
  }

  if(f.password1.value=='') 
  {       
    alert('Du skal udfylde feltet med dit password!');
    f.password1.focus();
    return fasle;
  }
}
</script>

<form action="opret.php" method="post" onsubmit="return validering(this);">
        <table border="0" cellpadding="0" cellspacing="0" width="541" height="500">
              <tr>
                <td width="120" height="35">Navn</td>
                <td width="148" height="35"><input type="text" name="navn" size="20"></td>
                <td width="273" height="35">*</td>
              </tr>
              <tr>
                <td width="120" height="35">Adresse</td>
                <td width="148" height="35"><input type="text" name="adresse" size="20"></td>
                <td width="273" height="35">*</td>
              </tr>
              <tr>
                <td width="120" height="35">Post nr.</td>
                <td width="148" height="35"><input type="text" name="post" size="20"></td>
                <td width="273" height="35">*</td>
              </tr>
              <tr>
                <td width="120" height="35">By</td>
                <td width="148" height="35"><input type="text" name="by" size="20"></td>
                <td width="273" height="35">*</td>
              </tr>
              <tr>
                <td width="120" height="35">Stedbetegnelse</td>
                <td width="148" height="35"><input type="text" name="sted" size="20"></td>
                <td width="273" height="35">&nbsp;</td>
              </tr>
              <tr>
                <td width="120" height="35">Telefon nr.</td>
                <td width="148" height="35"><input type="text" name="tlf" size="20"></td>
                <td width="273" height="35"></td>
              </tr>
              <tr>
                <td width="120" height="35">E-mail adresse</td>
                <td width="148" height="35"><input type="text" name="mail" size="20"></td>
                <td width="273" height="35">*</td>
              </tr>
              <tr>
                <td width="120" height="35">Password</td>
                <td width="148" height="35"><input type="text" name="password1" size="20"></td>
                <td width="273" height="35">*</td>
              </tr>
              <tr>
                <td width="120"></td>
                <td width="148" valign="top"></td>
                <td width="273" align="left" valign="top"><input type="submit" value="Send" name="B1"><input type="reset" value="Nulstil" name="B2"></td>
              </tr>
            </table></form>
Avatar billede roenving Novice
13. august 2003 - 15:43 #8
Der var også adskillige tavetosser, men 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.adresse.value=='')    {       
    alert('Du skal udfylde feltet med din adresse!');
    f.adresse.focus();
    return false;
  }

  if(f.post.value=='')    {       
    alert('Du skal udfylde feltet med dit post nr.!');
    f.post.focus();
    return false;
  }

  if(f.by.value=='')    {       
    alert('Du skal udfylde feltet med din by!');
    f.by.focus();
    return false;
  }

  var regexp = /^[\w\.\-_]+@[\w\-_]+\.[\w\.\-_]+$/i;
  tekst=f.mail.value.toLowerCase();
  if (!regexp.test(tekst)){
      alert ("Der skal stå en gyldig e-mail adresse i tekst feltet");
      f.mail.focus();
      return false;
  }

  if(f.password1.value=='') 
  {       
    alert('Du skal udfylde feltet med dit password!');
    f.password1.focus();
    return false;
  }
}
</script>
Avatar billede saxtus Nybegynder
13. august 2003 - 15:51 #9
den laver ikke nogen popup med at jeg har glemt at indtaste værdien, men har jeg noget galt med
<form action="opret.php" method="post" onsubmit="return validering(this);"> ??
Avatar billede saxtus Nybegynder
13. august 2003 - 16:03 #10
Nu virker det! :D
Har du et ide til hvordan jeg får lavet den så den har 4 cifre i postnr
og 8 i telefonnr, men stadig så man godt kan undlade at udfylde feltet telefonnr
Avatar billede saxtus Nybegynder
13. august 2003 - 16:04 #11
den skal også validere det så det kun er tal der må indtastes
Avatar billede roenving Novice
13. august 2003 - 16:07 #12
Ja:

Postnummeret (men hvad så med besøgende fra andre lande ?-)

  if(f.post.value==''||!f.post.value.match(/^\d{4}$/)    {       
    alert('Du skal udfylde feltet med dit post nr.!');
    f.post.focus();
    return false;
  }

  if(f.tlf.value==''&&!f.post.value.match(/^\d{8}$/)    {       
    alert('Telefonnummer skal angives med 8 cifre!');
    f.tls.focus();
    return false;
  }

-- og velbekomme '-)
Avatar billede roenving Novice
13. august 2003 - 16:08 #13
Den sidste blev en fejl:

  if(f.tlf.value!=''&&!f.post.value.match(/^\d{8}$/)    {       
    alert('Telefonnummer skal angives med 8 cifre!');
    f.tls.focus();
    return false;
  }
Avatar billede saxtus Nybegynder
13. august 2003 - 16:16 #14
Det skal bruges til en lokal side www.kalundhobbyen.dk

Mange tak for hjælpen, du har godt nok været effektiv
Avatar billede roenving Novice
13. august 2003 - 16:19 #15
-- og jeg siger tak for points ;~}

-- og der var stadig fejl, men her skulle den være:

  if(f.tlf.value!=''&&!f.tlf.value.match(/^\d{8}$/)    {       
    alert('Telefonnummer skal angives med 8 cifre!');
    f.tls.focus();
    return false;
  }
Avatar billede saxtus Nybegynder
13. august 2003 - 16:58 #16
Den giver mig en fejl igen efter jeg har sat det nye ind.
har sammenlignet de to nye og kan ikke finde nogen fejl der
Avatar billede roenving Novice
13. august 2003 - 17:00 #17
Jeg havde glemt en ) ,-(

  if(f.tlf.value!=''&&!f.tlf.value.match(/^\d{8}$/))    {       
    alert('Telefonnummer skal angives med 8 cifre!');
    f.tls.focus();
    return false;
  }
Avatar billede saxtus Nybegynder
13. august 2003 - 17:09 #18
jeg fandt selv fejlen, der manglede en ")" men der er stadig lidt problemer med det med tlf nr.
Avatar billede roenving Novice
13. august 2003 - 17:13 #19
Ja, jeg har stavet tlf forkert !-)

Så for 5. gang *g*

  if(f.tlf.value!=''&&!f.tlf.value.match(/^\d{8}$/))    {       
    alert('Telefonnummer skal angives med 8 cifre!');
    f.tlf.focus();
    return false;
  }
Avatar billede saxtus Nybegynder
13. august 2003 - 17:30 #20
Takker, nu virker det også perfekt!
troede at der var en fejl ved den sprang tlf over hvis man havde indtastet et eller andet, men når man så havde udfyldt de andrevendte den så tilbage til tlf.
Jeg er meget glad for din hjælp, og hvis der på noget punkt er noget jeg kan hjælpe med vil jeg da gøre hvad jeg kan.
Avatar billede roenving Novice
13. august 2003 - 17:34 #21
*g*
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