Avatar billede Slettet bruger
15. september 2009 - 23:33 Der er 10 kommentarer og
1 løsning

Validering af form

Har virkeligt et problem.
Har en formular, som jeg har valideret med javascript. Alt fungerer perfekt, når jeg kører den i et site, men når jeg lægger den ind i et andet site, Validerer den på første felt, sætter focus på feltet, når det ikke er udfyldt korrekt, hvorefter den indsætter i databasen (altså absolut ingenting). Har haft mange til at se på det, ingen kan finde fejlen. Har nogle nogen forslag til, hvad der kan være galt?

min validering ser sådan ud:
// JavaScript Document

function validering()
{
    error = 0;
        if((document.forms[0].fornavn.value=="") && (error==0)) 
        {       
            alert("Du skal udfylde feltet med dit fornavn!");
            document.forms[0].fornavn.focus();
            error = 1;       
        }           
   
            if((document.forms[0].efternavn.value=="") && (error==0)) 
        {       
            alert("Du skal udfylde feltet med dit efternavn!");
            document.forms[0].efternavn.focus();
            error = 1;       
        }           

        if((document.forms[0].adresse.value=="") && (error==0)) 
        {       
            alert("Du skal udfylde adressefeltet!");
            document.forms[0].adresse.focus();
            error = 1;       
        }           
        if((document.forms[0].postnr.value=="") && (error==0)) 
        {       
            alert("Du skal udfylde postnummerfeltet!");
            document.forms[0].postnr.focus();
            error = 1;       
        }
//NaN betyder Not a Number og er casesentetive
                else if(isNaN(document.forms[0].postnr.value) &&(error==0))
                {
                    alert("Du har ikke indtastet et nummer");
                    document.forms[0].postnr.focus();
                    error = 1;       
                }
                else
                {
                    if ((document.forms[0].postnr.value.length <3 || document.forms[0].postnr.value.length >4) &&(error==0))
                    {
                        alert("postnummeret skal være mellem 3 og 4 cifre");
                        document.forms[0].postnr.focus();
                        error = 1;   
                    }
                }


        if((document.forms[0].by.value=="") && (error==0)) 
        {       
            alert("Du skal udfylde feltet by!");
            document.forms[0].by.focus();
            error = 1;       
        }   
   
   
//valuering af mailfeltet og hvordan mailadressen er opbygget
//først testes om feltet er tomt
        if((document.forms[0].e-mail.value=="") && (error==0)) 
        {       
            alert("Du skal udfylde felter e-mail!");
            document.forms[0].e-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.forms[0].e-mail.value!="")
            {
                placering=0;
                tekst=(document.forms[0].e-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.forms[0].e-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.forms[0].e-mail.focus();
                    error = 1;
                }
                else
                {
                    if (placering<1 || tekst.length<=(placering+1))
                    {
                        alert ("Mailadressen er forkert - forsøg igen");
                        document.forms[0].e-mail.focus();
                        error = 1;
       
                    }
                }
            }
        }

    }


            if((document.forms[0].tlf.value=="") && (error==0)) 
                {       
                    alert("Du skal skrive dit telefonnummer!");
                    document.forms[0].tlf.focus();
                    error = 1;       
                }   


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

   
//hvis alle felter er udfyldt error ==0 sendes (submittes)formularen
    if(error == 0)     document.forms[0].submit();   
           
}

Formen er her:
?php
if(isset($_POST['send']))//dette har mette tilføjet, da der ikke er nogen action i formularen - inkl. de 2 tuborgklammer før og efter listen.
{
    $fnavn=$_POST['fornavn'];
    $enavn=$_POST['efternavn'];
    $adresse=$_POST['adresse'];
    $postnummer=$_POST['postnr'];
    $by=$_POST['by'];
    $tlf=$_POST['tlf'];
    $mail=$_POST['e-mail'];
    $besked =$_POST['besked'];
    mysql_connect($host,$username,$password) or die ("kunne ikke forbinde til databasen");
    mysql_select_db($database);
    $sql = "INSERT INTO `kontakt` (`kontakt_ID`, `fornavn`, `efternavn`, `adresse`, `postnr`,`by`, `e-mail`, `tlf`, `besked`)
            VALUES (null, '$fnavn', '$enavn', '$adresse', '$postnummer', '$by', '$mail', '$tlf','$besked')";
    mysql_query($sql);
    echo mysql_error();
}
?>





     
     
      <form id="form1" name="form1" method="post" action="" onsubmit="validering();return false;">
        <table width="450" border="0" cellspacing="3" cellpadding="0">
          <tr>
            <td valign="top">&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td valign="top">Fornavn:</td>
            <td><label>
              <input type="text" name="fornavn" id="fornavn" />
            </label></td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td valign="top">Efternavn:</td>
            <td><label>
              <input type="text" name="efternavn" id="efternavn" />
            </label></td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td valign="top">Adresse:</td>
            <td><label>
              <input type="text" name="adresse" id="adresse" />
            </label></td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td valign="top">Postnr.:</td>
            <td><label>
              <input type="text" name="postnr" id="postnr" />
            </label></td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td valign="top">By:</td>
            <td><label>
              <input type="text" name="by" id="by" />
            </label></td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td valign="top">e-mail:</td>
            <td><label>
              <input type="text" name="e-mail" id="e-mail" />
            </label></td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td valign="top">evt. tlf:</td>
            <td><label>
              <input type="text" name="tlf" id="tlf" />
            </label></td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td valign="top">Besked:</td>
            <td><label>
              <textarea name="besked" cols="30" rows="5" id="besked"></textarea>
            </label></td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td><label>
              <input type="submit" name="send" id="send" value="Send" />
            </label></td>
            <td>&nbsp;</td>
          </tr>
        </table>
      </form>
Avatar billede olebole Juniormester
16. september 2009 - 00:47 #1
<ole>

Der er ikke noget i denne kode, der kan give de forskelle, du beskriver. Prøv at lægge et link til de to sider

/mvh
</bole>
Avatar billede Slettet bruger
16. september 2009 - 08:31 #2
Har desværre ikke mulighed for at uploade filerne (er i et skoleforløb). Kan det klares på en anden måde?
Avatar billede olebole Juniormester
16. september 2009 - 16:03 #3
Vi kunne jo starte en quiz  =)
Avatar billede Slettet bruger
16. september 2009 - 18:46 #4
hmmm. Nu var jeg ellers lige blevet så glad for dig ;-). Du har været rigtig venlig, i dine svar i meget lang tid.

Jeg ved, at det ikke er let, når jeg ikke kan lægge mit site på nettet, men havde håbet på, at en eller anden kunnde sige "det har jeg også været ude for" og fortælle mig en mulig løsning. Går på Tekniske Skole i Roskilde, og der er flere af mine lærerne, der har kigget på koden uden at kunne finde ondets rod. Hvilket selvfølgelig er en lettelse for mig (så er det ikke kun mig der er dum), men også giver mig mange frustrationer, da jeg er typen der nødigt vil give op.

Men OK lad os starte en quiz = 100 point til den der har løsningen. Sitet kan sendes i en zip fil.
Avatar billede olebole Juniormester
16. september 2009 - 21:14 #5
Jamen, der var skam intet uvenligt i den bemærkning  =)

Prøv, om du har de samme problemer med dette javascript, hvor e-mail valideringen er skåret fra:


function validering()
{
    error = 0;
        if((document.forms[0].fornavn.value=="") && (error==0)) 
        {       
            alert("Du skal udfylde feltet med dit fornavn!");
            document.forms[0].fornavn.focus();
            error = 1;       
        }           
   
            if((document.forms[0].efternavn.value=="") && (error==0)) 
        {       
            alert("Du skal udfylde feltet med dit efternavn!");
            document.forms[0].efternavn.focus();
            error = 1;       
        }           

        if((document.forms[0].adresse.value=="") && (error==0)) 
        {       
            alert("Du skal udfylde adressefeltet!");
            document.forms[0].adresse.focus();
            error = 1;       
        }           
        if((document.forms[0].postnr.value=="") && (error==0)) 
        {       
            alert("Du skal udfylde postnummerfeltet!");
            document.forms[0].postnr.focus();
            error = 1;       
        }
//NaN betyder Not a Number og er casesentetive
                else if(isNaN(document.forms[0].postnr.value) &&(error==0))
                {
                    alert("Du har ikke indtastet et nummer");
                    document.forms[0].postnr.focus();
                    error = 1;       
                }
                else
                {
                    if ((document.forms[0].postnr.value.length <3 || document.forms[0].postnr.value.length >4) &&(error==0))
                    {
                        alert("postnummeret skal være mellem 3 og 4 cifre");
                        document.forms[0].postnr.focus();
                        error = 1;   
                    }
                }


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


            if((document.forms[0].tlf.value=="") && (error==0)) 
                {       
                    alert("Du skal skrive dit telefonnummer!");
                    document.forms[0].tlf.focus();
                    error = 1;       
                }   


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

   
//hvis alle felter er udfyldt error ==0 sendes (submittes)formularen
    if(error == 0)    document.forms[0].submit();   
           
}

Avatar billede Slettet bruger
17. september 2009 - 11:04 #6
Hej olebole. Du er inde på det rigtige.Når jeg fjerner e-mail valideringen virker resten. Meget mystisk! Især fordi den virker i mit andet site.
Har du en forklaring på, hvad der kan være galt, eller en alternativ måde at tjekke at det er en valid e-mail adresse, der er indtastet?
Avatar billede olebole Juniormester
18. september 2009 - 23:19 #7
Når du skriver:

tekst=(document.forms[0].e-mail.value).toLowerCase();

- behøver du naturligvis ikke at teste på Æ, Ø og Å - du kan nøjes med æ, ø og å  ;o)

Derudover bør du i følge standarden encode specialtegn i JavaScript. Prøv at udskifte dine tegn:

æ => \u00e6
ø => \u00f8
å => \u00e5
@ => \u0040

Så er jeg ret sikker på, det spiller  =)
Avatar billede olebole Juniormester
18. september 2009 - 23:25 #8
Jeg tror nu, det har noget at gøre med det anvendte tegnsæt i de to dokumenter - eller den måde, de bliver served på. Vær helt sikker på, der er tale om ét og samme dokument, du uploader - så det ene ikke er gemt som ANSI og det andet som utf-8.

Tjek derefter dokumentet fra begge servere her:
    http://validator.w3.org/#validate_by_uri+with_options

- og husk at sætte flueben i Verbose Output. Så kan du i toppen af resultatet aflæse det tegnsæt, dokumentet er sendt med - ved Encoding.

Lad mig endelig høre nærmere  =)
Avatar billede Slettet bruger
21. september 2009 - 20:05 #9
Tak for din indsats. Jeg har nu forsøgt mig med en validering, men de fejl der meldes er ret besynderlige. Jeg har også forsøgt mig lidt omkring æø og å, men er ikke sikker på hvad det er du vil have mig til.

Jeg er ret ny i faget, så jeg skal have det hele skåret ud i pap ;-)
Avatar billede Slettet bruger
29. januar 2010 - 23:58 #10
Hej olebole ser jeg skyder dig nogle point.

Opgave i min sidste opgave, at få løst problemet. Har nu lavet en anden udgave med lidt hjælp omkring selve kaldet til valideringen som nu hedder onsubmit="return validering();

Samt en ændring i min java validering som til slut har

if(error == 0)    return true;
        else return false;

i stedet for
if(error == 0)    document.forms[0].submit();   

gider du lægger et svar for alt dit besvær, som jo hjalp noget af vejen.
Avatar billede Slettet bruger
07. august 2010 - 12:01 #11
lukker
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