Avatar billede thomas-k Nybegynder
29. juli 2007 - 16:33 Der er 14 kommentarer og
1 løsning

Valider e-mail adresse

Jeg har følgende script som tjekker om alle felter er udfyldt. Nu vil jeg gerne have scriptet udbygget til at validere om e-mail adressen er korrekt. Nogle der kan hjælpe med dette:

<script type="text/javascript"><!--

function validate(thisForm) {
with (thisForm) {
var alertMessage = "Fejl:\n";
if (navn.value == "") alertMessage += "\nDer er ikke angivet noget navn!";
if (email.value == "") alertMessage += "\nDer er ikke angivet nogen e-mail adresse!";
if (strCAPTCHA.value == "") alertMessage += "\nDer er ikke angivet nogen kode!";
if (besked.value == "") alertMessage += "\nDer er ikke angivet nogen besked!";
if (alertMessage != "Fejl:\n") {alert(alertMessage);
return false;
} else return true;
} }

// --></script>

-----længere nede------
<form action='side.asp' method='post' onsubmit='return validate(this)'>
<input type='text' name='email'>
<input type='submit' name='send' value='Send besked'>
Avatar billede w13 Novice
29. juli 2007 - 17:06 #1
if (email.indexOf("@")==0||email.lastIndexOf(".")==0||email.indexOf("@")==-1||email.lastIndexOf(".")==-1||email.lastIndexOf(".")<email.indexOf("@")||email.lastIndexOf(".")-email.indexOf("@"))

^Tjekker om emailadressen er gyldig.
Avatar billede kalp Novice
29. juli 2007 - 17:39 #2
der skal kun indtastes id på det input felt hvor email indtastes i
document.getElementById('emailinputfeltid');
så skal du bare gemme disse 2 functioner

function ValidateEmail()
    {
        var emailID= document.getElementById('emailinputfeltid');
       
        if ((emailID.value==null)||(emailID.value=="")){
            alert('Ugyldig email');   
        }
        if (echeck(emailID.value)==false){
            alert('Ugyldig email');   
        }
    }

og denne

function echeck(str) {

        var at="@";
        var dot=".";
        var lat=str.indexOf(at);
        var lstr=str.length;
        var ldot=str.indexOf(dot);
        if (str.indexOf(at)==-1){
alert('Ugyldig email');
            return false;
        }

        if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
    alert('Ugyldig email');
            return false;
        }

        if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
alert('Ugyldig email');
            return false;
        }

        if (str.indexOf(at,(lat+1))!=-1){
alert('Ugyldig email');
            return false;
        }

        if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
    alert('Ugyldig email');
            return false;
        }

        if (str.indexOf(dot,(lat+2))==-1){
alert('Ugyldig email');
            return false;
        }
       
        if (str.indexOf(" ")!=-1){
alert('Ugyldig email');
            return false;
        }

        return true;                   
    }
Avatar billede w13 Novice
29. juli 2007 - 17:59 #3
kalp>> if-sætningerne burde måske slåes sammen til én, hvis man ikke vil risikere at få smidt 7 alerts med "Ugyldig email" op på skærmen :)
Avatar billede kalp Novice
29. juli 2007 - 18:15 #4
hehe jeg bruger den ikke med alerts rigtig men på en label:P
Avatar billede w13 Novice
29. juli 2007 - 18:46 #5
Ah, ok :)
Avatar billede kalp Novice
29. juli 2007 - 19:59 #6
w13 >> nu hvor jeg kigger på koden så vil den faktisk ikke smide 7 alerts op på skærmen.


der er jo return false hvis den havner i en af dem:)
Avatar billede w13 Novice
29. juli 2007 - 20:34 #7
Ja, det er vist korrekt.
Avatar billede olebole Juniormester
30. juli 2007 - 01:06 #8
<ole>

En ny linje til din egen funktion (i spørgsmålet):
    if (!email.value.match(/^.*@\w[\w\.-]*\.[a-z]{2,6}$/)) alertMessage += "\nE-mail-adressen er ikke valid!";

/mvh
</bole>
Avatar billede thomas-k Nybegynder
30. juli 2007 - 01:42 #9
Hmmm, tak for de gode forslag. Dog kan jeg rigtig godt li' oleboles forslag da den er så dejlig simpel på en enkelt linie. Dog fatter jeg ikke helt at den ikke virker. Jeg kan stadig bare skrive fx: a, og stadig behandler den formen? Kan ikke lige selv se hvad der skulle være galt med den.
Avatar billede thomas-k Nybegynder
30. juli 2007 - 01:44 #10
Ahh, damn. Der var jeg for hurtig. Jeg havde lagt linien for langt nede og nu virker det korrekt.

<ole>
Rocks endnu engang!
</bole>
Avatar billede olebole Juniormester
30. juli 2007 - 02:03 #11
Den er ikke 100% skudsikker, men den fanger laaaaangt de fleste fejl  ;o)
Avatar billede kalp Novice
30. juli 2007 - 10:07 #12
jeg fatter ikke hvorfor der ikke skal ' ' rundt om den regexp :S
Avatar billede olebole Juniormester
30. juli 2007 - 11:57 #13
Det er fordi, at regulære udtryk escapes med '/' i stedet:
    --> /^.*@\w[\w\.-]*\.[a-z]{2,6}$/ <--

Læs evt. lidt om RegExp her:
    http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:RegExp

- og spørg gerne igen, men læs først. Det får du mest ud af  ;o)
Avatar billede kalp Novice
30. juli 2007 - 12:03 #14
tror lige det skal læses:D
i andre sprog er jeg jo vant til "" rundt om:)
Avatar billede olebole Juniormester
30. juli 2007 - 14:30 #15
Ja, hvilket ikke ligefrem er logisk, da der jo ikke er tale om en streng  ;o)

På den anden side kan du i JS bruge RegExp på flere måder. Instantierer du RegExp-objektet med new RegExp(), skal du også bruge gåseøjne. Det står der en masse om bag det link, jeg skrev  =)

Takker for points  ;o)
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