Avatar billede aerobee Nybegynder
23. august 2005 - 15:47 Der er 13 kommentarer og
1 løsning

Lad email felt være tomt

Hejsa...

Jeg har et lille javascript der validerer min form om felter er udfyldt og om den indtastede email er gyldig.
Men, jeg vil også gerne have det sådan at email feltet kan være tomt og formularen bliver sendt ved tryk på "send" knappen. Hvis email feltet IKKE er tomt skal der valideres på om emailen er gyldig...

Kort sagt...
Jeg har et javascript som virker helt fint.
Vil bare gerne have hjælp til at fjerne/tilføje kode sådan at email felt kan være tomt og form stadig kan sendes, men hvis email feltet IKKE er tomt skal email validers for at være gyldig.

Her er koden det hele handler om:

<script language = "Javascript">

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 E-Mail adresse")
          return false
        }

        if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
          alert("Ugyldig E-Mail adresse")
          return false
        }

        if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
            alert("Ugyldig E-Mail adresse")
            return false
        }

        if (str.indexOf(at,(lat+1))!=-1){
            alert("Ugyldig E-Mail adresse")
            return false
        }

        if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
            alert("Ugyldig E-Mail adresse")
            return false
        }

        if (str.indexOf(dot,(lat+2))==-1){
            alert("Ugyldig E-Mail adresse")
            return false
        }
       
       

        return true                   
    }

function ValidateForm(){
    var navnID=document.frmSample.navn
    var emailID=document.frmSample.Email
    var emneID=document.frmSample.emne
    var beskedID=document.frmSample.besked
   
    if ((navnID.value==null)||(navnID.value=="")){
        alert("Husk at indtaste dit navn")
        navnID.focus()
        return false
    }
   
    if ((emailID.value==null)||(emailID.value=="")){
        alert("Husk at indtaste din E-Mail adresse")
        emailID.focus()
        return false
    }
   
    if ((emneID.value==null)||(emneID.value=="")){
        alert("Husk at indtaste et emne")
        emneID.focus()
        return false
    }
   
    if ((beskedID.value==null)||(beskedID.value=="")){
        alert("Husk at indtaste en besked")
        beskedID.focus()
        return false
    }
   
    if (echeck(emailID.value)==false){
        emailID.value=""
        emailID.focus()
        return false
    }
    return true
}
</script>
Avatar billede nielle Nybegynder
23. august 2005 - 15:50 #1
Tilføj denne ene linje:

function echeck(str) {
    if (str == "") return true;

    var at="@"
    var dot="."
    var lat=str.indexOf(at)
    var lstr=str.length
    var ldot=str.indexOf(dot)
Avatar billede roenving Novice
23. august 2005 - 15:52 #2
function echeck(str) {
        if (!str.match(/^.*@\w[\w\.-]*\.[a-z]{2-6}$|)){
            alert("Ugyldig E-Mail adresse");
            return false;
        }
        return true;
    }
Avatar billede roenving Novice
23. august 2005 - 15:53 #3
Hov, der mangler en slash:

        if (!str.match(/^.*@\w[\w\.-]*\.[a-z]{2-6}$|/)){
Avatar billede roenving Novice
23. august 2005 - 15:53 #4
-- og man burde vel også sætte start/slut på den tomme:

        if (!str.match(/^.*@\w[\w\.-]*\.[a-z]{2-6}$|^$/)){
Avatar billede aerobee Nybegynder
23. august 2005 - 16:15 #5
nielle/

Dit forslag kan jeg ikke få til at virke desværre
Avatar billede aerobee Nybegynder
23. august 2005 - 16:19 #6
roenving/

Kan ikke se ideen i dit forslag...
Det ser ud som om du validerer på indholdet i email feltet og melder fejl hvis det ikke er en korrekt email???
Det har jeg jo allerede...
Skal jo være sådan at hvis feltet IKKE er tomt skal indholdet valideres (hvilket allerede virker) og hvis feltet ER tomt skal der ikke valideres og man skal kunne sende mailen(hvilket IKKE virker)...
Avatar billede roenving Novice
23. august 2005 - 16:33 #7
I stedet for din 56-linjers-kode, viser jeg en udgave, hvor der kun bruges 3 linjer, og den accepterer enten en korrekt e-mail-adresse eller et tomt felt !-)

-- men der var en tavetosse, f.eks. i denne udgave fungerer den:

<script type="text/javascript">
function echeck(str) {
        if (!/^.*@\w[\w\.-]*\.[a-z]{2,6}$|^$/.test(str)){
            alert("Ugyldig E-Mail adresse\n"+ch);
            return false;
        }
        return true;
    }
</script>
Avatar billede roenving Novice
23. august 2005 - 16:34 #8
Øv, der var debug-kode med:

<script type="text/javascript">
function echeck(str) {
        if (!/^.*@\w[\w\.-]*\.[a-z]{2,6}$|^$/.test(str)){
            alert("Ugyldig E-Mail adresse");
            return false;
        }
        return true;
    }
</script>
Avatar billede aerobee Nybegynder
23. august 2005 - 16:35 #9
roenving/

Okay, men der skal jo også valideres på felterne navn,emne og besked. (og de SKAL være udfyldt)

Hvordan integrerer jeg så det i det script du har der ?
Avatar billede roenving Novice
23. august 2005 - 16:39 #10
Du har i forvejen en validering, som kalder en echeck-funktion, det bibeholder du bare !-)
Avatar billede aerobee Nybegynder
23. august 2005 - 16:45 #11
Great job roenving... It works :)

Smid et svar
Avatar billede roenving Novice
23. august 2005 - 16:48 #12
Velbekomme '-)
Avatar billede roenving Novice
23. august 2005 - 16:53 #13
-- og tak for point ;~}
Avatar billede aerobee Nybegynder
23. august 2005 - 16:53 #14
anytime
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