Avatar billede Slettet bruger
14. maj 2009 - 13:55 Der er 6 kommentarer og
1 løsning

hvorfor laver min validering alert på 2 inputboxe

Jeg har lavet en formular, som jeg validerer med javascript

Når jeg ikke skriver i navn, kommer der en alert, når jeg trykker på den, kommer den en alert for mail feltet. Det samme sker, når jeg har udfyldt navn og ikke udfylder adressen.

Jeg har været ude for det før, men kan ikke huske løsningen. Håber en eller anden kan hjælpe.

Min validering ser ud som følger:

function validering()
{  error = 0;
    if((document.kontaktform2.navn.value=="") && (error==0)) 
    {       
        alert("Du skal udfylde feltet med dit navn!");
        document.kontaktform2.navn.focus();
        error = 1;       
    }           

    if((document.kontaktform2.adresse.value=="") && (error==0)) 
    {       
        alert("Du skal udfylde adressefeltet!");
        document.kontaktform2.adresse.focus();
        error = 1;       
    }           
   
   
    if((document.kontaktform2.mail.value=="") && (error==0)) 
    {       
        alert("Du skal udfylde felter e-mail!");
        document.kontaktform2.mail.focus();
        error = 1;       
    }   
//hvis det ikke er tomt (er forskelligt fra tomt) testet om der er et snabel a, æ,ø å o.s.v.)
    else if (document.kontaktform2.value!="")
    {
        placering=0;
        tekst=(document.kontaktform2.mail.value).toLowerCase();
        placering=tekst.indexOf("@");
        if(tekst =="")
        {
            alert ("Du skal indtaste en e-mail adresse");
            error = 1;
        }
        else
        {
            tegn=tekst.indexOf(" ");
            if(tegn!=-1)
            {
              alert ("Der må ikke være mellemrum i mail adressen");
              document.kontaktform2.mail.focus();
              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 ("Adressen må ikke indeholde æ ø å Æ Ø Å , ;");
                    document.kontaktform2.mail.focus();
                    error = 1;
                }
                else
                {
                    if (placering<1 || tekst.length<=(placering+1))
                    {
                        alert ("Mailadressen er forkert - forsøg igen");
                        document.kontaktform2.mail.focus();
                        error = 1;
                    }
                }
            }
        }

    }

    if((document.kontaktform2.meddelelse.value=="") && (error==0)) 
    {       
        alert("Du skal skrive noget i tekstfeltet!");
        document.kontaktform2.meddelelse.focus();
        error = 1;       
    }       

   
//hvis alle felter er udfyldt error ==0 sendes (submittes)formularen
    if(error == 0)    document.kontaktform2.submit();   
}
Avatar billede roenving Novice
14. maj 2009 - 15:56 #1
Der må gædt være mellemrum, æøåé osv. i mail-adresser, men en del af tegnene må kun være foran @-tegnet ...

Valideringen burde ikke give problemer i den form du har den, men jeg kan da stærkt opfordre til at du bruger en meget simplere og bedre model:

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 adressefeltet!");
        f.adresse.focus();
        return false;     
    }         
 
 
    if(f.mail.value=="")
    {     
        alert("Du skal udfylde felter e-mail!");
        f.mail.focus();
        return false;     
    } 
//hvis det ikke er tomt (er forskelligt fra tomt) testet om der er et snabel a, æ,ø å o.s.v.)
    else if f.mail.value!="")
    {
        placering=0;
        tekst=f.mail.value).toLowerCase();
        placering=tekst.indexOf("@");
        if(tekst =="")
        {
            alert ("Du skal indtaste en e-mail adresse");
            return false;
        }
        else
        {
            tegn=tekst.indexOf(" ");
            if(tegn!=-1)
            {
              alert ("Der må ikke være mellemrum i mail adressen");
              f.mail.focus();
              return false;
            }
            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 ("Adressen må ikke indeholde æ ø å Æ Ø Å , ;");
                    f.mail.focus();
                    return false;
                }
                else
                {
                    if (placering<1 || tekst.length<=(placering+1))
                    {
                        alert ("Mailadressen er forkert - forsøg igen");
                        f.mail.focus();
                        return false;
                    }
                }
            }
        }

    }

    if(f.meddelelse.value=="")
    {     
        alert("Du skal skrive noget i tekstfeltet!");
        f.meddelelse.focus();
        return false;     
    }
    //hvis alle felter er udfyldt error ==0 sendes (submittes)formularen
    return true; 
}

-- og så skal du lave kaldet således:

<form action=" ... " name="kontaktform2" onsubmit="return validering(this)">
Avatar billede roenving Novice
14. maj 2009 - 15:58 #2
PS. Jeg forholdt mig ikke til issues omkring mail-adressen, men jeg synes det er dumt at rejecte en ellers korrekt mail-adresse fordi den f.eks. findes på domænet rødejens.dk el.
Avatar billede roenving Novice
14. maj 2009 - 16:00 #3
-- og min søg og erstat-ting fjernede et par paranteser for meget:

...
//hvis det ikke er tomt (er forskelligt fra tomt) testet om der er et snabel a, æ,ø å o.s.v.)
    else if (f.mail.value!="")
    {
        placering=0;
        tekst=(f.mail.value).toLowerCase();
        placering=tekst.indexOf("@");
        if(tekst =="")
        {
...
Avatar billede Slettet bruger
18. maj 2009 - 13:10 #4
Hej roenving
Har fået min validering til at virke en. Har slet ikke set, at du har svaret - gad vide hvad der er gået galt.

Kunne heller ikke forstå, jeg selt ingen respons fik.

læg et svar og tak for udvist deltagelse
Avatar billede Slettet bruger
18. maj 2009 - 13:10 #5
selt= slet
Avatar billede roenving Novice
18. maj 2009 - 15:09 #6
Oki '-)

-- men overvej kraftigt at forlade den dybt forældede måde at benytte javascript-html-binding, som den validering, du har fundet, er udtryk for (og som bl.a. promoveres af et dybt håbløst site som html.dk !-)
Avatar billede roenving Novice
18. maj 2009 - 22:06 #7
-- 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