Validering af formular

Her kan du få hjælp og stille spørgsmål til JavaScript!
Besvar
KHIT
Entusiast
Entusiast
Indlæg:28
Tilmeldt:16. sep 2011, 18:34
Validering af formular

Indlæg af KHIT » 24. jan 2012, 20:03

Hej
Jeg har fået lavet en hjemmeside, men jeg modtager med mellemrum tomme mails, samt at jeg har modtaget en fra en person der ikke ønskede at oplyse hverken navn eller kontaktoplysninger, og desuden udgav denne sig for at være fra min internetudbyder.
Jeg kune godt tænke mig at bruge den kode der er lavet i den seneste javascript video, men lige lave lidt modifikationer på den.

Kode: Vælg alt

        <script type="text/javascript">
         function validerform () {
             
             if (document.formular.navn.value == "") {
                 
                 alert ("dit navn er ikke udfyldt");
                 return false;
                 
             } 
             
             if (document.formular.alder.value == "") {
                 
                 alert ("din alder er ikke udfyldt");
                 return false;
                 
             }
             
             if (document.formular.alder.value != "" && document.formular.navn.value != "" ) {
                 
                 return true;
                 
             }
             
             
         } 
                  
            
            
       </script> 
Koden er kopieret fra videoen, men jeg vil gerne have at den også returnerer en fejl hvis man indsætter specialtegn, samt at hvis man udfylder et navn på 1 karakter(egentlig ville jeg helst op på mindst 3, men folk der hedder Ib for jo et problem)
Jeg ved godt at jeg bare tilføjer et par ekstra if statements, men jeg ved ikke hvordan jeg skal implementere de ændringer jeg gerne vil lave.

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Validering af formular

Indlæg af ThomasI » 24. jan 2012, 21:10

Hej med dig.

Hvis du vil validere længden på et input kan du bruge et if statement således:

Kode: Vælg alt

  if (document.getElementById('navn').value.length < 2 )
	     {
		alert("Skriv et ordentligt navn!");
                return false;
               }

Husk også at skrive id="navn" i din navn input field i formularen.

Hvis du vil undgå underlige tegn, kan du indsætte denne også:

Kode: Vælg alt

var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
        for (var i = 0; i < document.formular.navn.value.length; i++) {
                if (iChars.indexOf(document.formular.navn.value.charAt(i)) != -1) {
                alert ("Skriv venligst med almindelige bogstaver");
                return false;
                 }
                }
Den kontrollerer dit navn for alle de tegn som står under iCars.

Har selv lige teste begge koder og det skulle gerne virke... Navnet kan nu ikke være under 2 karaktere langt og du kan ikke bruge special tegn...

Håber du kan bruge det :D

KHIT
Entusiast
Entusiast
Indlæg:28
Tilmeldt:16. sep 2011, 18:34

Re: Validering af formular

Indlæg af KHIT » 25. jan 2012, 18:11

Ok, nu har jeg modificeret det til mine behov, og det virker alt som det skal, men når jeg tester det i forbindelse med min hjemmeside, og ikke kun i en seperat mappe, hvor det eneste der er tilstede er min kontaktformular, javascriptet, samt den fil man bliver sendt videre til.
Når jeg prøver at teste det, så sender den mailen med det samme, også selvom jeg har brudt de "regler" jeg har opsat for gyldigheden af formularen.
Kan man ikke afvikle javascript fra en database?

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Validering af formular

Indlæg af ThomasI » 25. jan 2012, 19:56

Hej igen...

Har du et link til din side så man kan se det?

Det burde virke på samme måde ligemeget hvor du bruger det...

Har du din php kode liggende i den samme fil som forumlaren og javascriptet eller sender din form dataen videre til en ny side?

KHIT
Entusiast
Entusiast
Indlæg:28
Tilmeldt:16. sep 2011, 18:34

Re: Validering af formular

Indlæg af KHIT » 26. jan 2012, 18:52

Hej
Her er link til min kontaktside: http://creativespectrum.dk/vis.php?id=7
Jeg får en #1366 fejl i phpMyAdmin når jeg tilføjer formular og script, men hvis jeg beder min browser om at vise kildekoden, så viser den at mit script burde være der.

Her er hele koden, som den bliver indsat i databasen:

Kode: Vælg alt

<form method="post" action="kontakt/kontaktformular.php" name="formular" onsubmit="return validerform()">
<table width="475px">
<tbody> <tr><td style="width:100px;">Navn:</td><td><input name="navn" style="width:375px;" type="text" id="navn"></td></tr>
<tr><td>E-mail:</td><!--spamf�lde begynd--><td><span style="display: none;">Dette felt skal ikke udfyldes: <input name="email" type="text"><br></span><input name="epost" style="width:375px;" type="text" id="email"></td></tr><!--spamf�lde slut-->
<tr><td>Emne:</td><td><input name="emne" style="width:375px;" type="text" id="emne"></td></tr>
<tr><td>Besked:</td><td align="center"><textarea name="besked" style="width:375px; height:100px" rows="5" cols="40" id="besked"></textarea></td></tr>
<tr><td colspan="2" style="text-align:center;">Send mig en kopi <input type="checkbox" name="kopi"></td></tr>
<tr><td colspan="2" align="center"><input value="Send" type="submit"><input name="clear" value="Slet alt" title="Slet alt" type="reset"></td></tr></tbody></table></form>
<script type="text/javascript">
         function validerform () {
             
             if (document.formular.navn.value == "") {
                 
                 alert ("dit navn er ikke udfyldt");
                 return false;
                 
             } 
             
             if (document.formular.email.value == "") {
                 
                 alert ("din e-mail er ikke udfyldt");
                 return false;
                 
             }
             
             if (document.formular.besked.value == "") {
                 
                 alert ("Da du benytter vores kontaktformular, udfyld venligst beskedfeltet");
                 return false;
                 
             }
             
             if (document.formular.email.value != "" && document.formular.navn.value != "" && document.formular.besked.value != "") {
                 
                 return true;
                 
             }
             
            if (document.getElementById('navn').value.length < 2 )
        {
      alert("Skriv et ordentligt navn!");
                return false;
               }
               if (document.getElementById('email').value.length < 2 )
        {
      alert("Skriv en ordentlig e-mail adresse!");
                return false;
               } 
               var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
        for (var i = 0; i < document.formular.navn.value.length; i++) {
                if (iChars.indexOf(document.formular.navn.value.charAt(i)) != -1) {
                alert ("Det er ikke normalt at et navn indeholder specialtegn som ? og !");
                return false;
                 }
                 var iChars2 = "!#$%^&*()+=[]\\\';,/{}|\":<>?";
        for (var i = 0; i < document.formular.email.value.length; i++) {
                if (iChars2.indexOf(document.formular.email.value.charAt(i)) != -1) {
                alert ("Din emailadresse indeholder ugyldige tegn");
                return false;
                 }
                 
                }
         } 
                  
            
            
       </script>
Det fungerer således at min formular og mit javascript ligger i en fil(dvs. en post i databasen), når man udfører(submit) formularen, så samler den fil man bliver sendt videre til alle oplysningerne og sender dem videre til min mailadresse, når det er gjort sender den brugeren videre til en ganske enkel side der bare fortæller brugeren at mailen er sendt.

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Validering af formular

Indlæg af ThomasI » 26. jan 2012, 21:19

Prøv at ændre det således at denne if kommer til sidst:

Kode: Vælg alt

             if (document.formular.email.value != "" && document.formular.navn.value != "" && document.formular.besked.value != "") {   
                 return true;
             }
Gør det nogen forskel?

KHIT
Entusiast
Entusiast
Indlæg:28
Tilmeldt:16. sep 2011, 18:34

Re: Validering af formular

Indlæg af KHIT » 27. jan 2012, 07:52

Har lige prøvet det, men det virker stadig ikke.
Måske skulle jeg prøve at lave en seperat javascriptfil, og så gøre dette:

Kode: Vælg alt

<script type="text/JavaScript" src="js/validerform.js"></script>
Ville det gøre nogen forskel

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Validering af formular

Indlæg af ThomasI » 27. jan 2012, 08:57

Du kan prøve men er ikke sikker på om det vil gøre en forskel.

Hvis koden virkede lokat hos dig burde den også virke nu...

Hvis du ikke har gjort andet end at tage det fra din test side og lagt det online kan jeg ikke se hvad problemet skulle være...

Er der nogen forskel på hvordan det hele er sat sammen i forhold til da du testede det på din egen computer?

KHIT
Entusiast
Entusiast
Indlæg:28
Tilmeldt:16. sep 2011, 18:34

Re: Validering af formular

Indlæg af KHIT » 27. jan 2012, 11:41

Den eneste forskel på da jeg testede den, og så når den ligger på mit site er at den ligger i en fil når jeg tester, og i en database ude på mit site.
Kan det have noget at gøre med at ude på mit site, har jeg bedt den om at placere det indhold, den henter fra database, i <p></p> tags?
Jeg prøver lige at placere mit script i en seperat fil og se om det virker.

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Validering af formular

Indlæg af ThomasI » 27. jan 2012, 12:33

ok,

Jamen det må jo næsten være der det går galt at du kører den hen over databasen.

Prøv istedet ja at inkluder den i en JS fil...

Hvordan sættes din formular ind? også vi databasen?

KHIT
Entusiast
Entusiast
Indlæg:28
Tilmeldt:16. sep 2011, 18:34

Re: Validering af formular

Indlæg af KHIT » 27. jan 2012, 17:46

Ja, alt indhold der ses i den midterste kasse(DIV) hentes fra databasen. Så ja min formular køres også derfra.
Det virker dog stadig ikke.
Den sender mig bare videre.
Jeg tvivler på at det gør nogen forskel, men her er alt det kode der står i databasen:

Kode: Vælg alt

<p>Kontaktoplysninger:</p>
<p>Mobildiskotek Creative Spectrum<br />Hostrupvej 30, Jejsing<br />6270 T&oslash;nder<br />E-mail: <a href="mailto:info@creativespectrum.dk">info@creativespectrum.dk</a></p>
</br>
<form method="post" action="kontakt/kontaktformular.php" name="formular" onsubmit="return validerform()">
<table width="475px">
<tbody> <tr><td style="width:100px;">Navn:</td><td><input name="navn" style="width:375px;" type="text" id="navn"></td></tr>
<tr><td>E-mail:</td><!--spamf?lde begynd--><td><span style="display: none;">Dette felt skal ikke udfyldes: <input name="email" type="text"><br></span><input name="epost" style="width:375px;" type="text" id="email"></td></tr><!--spamf?lde slut-->
<tr><td>Emne:</td><td><input name="emne" style="width:375px;" type="text" id="emne"></td></tr>
<tr><td>Besked:</td><td align="center"><textarea name="besked" style="width:375px; height:100px" rows="5" cols="40" id="besked"></textarea></td></tr>
<tr><td colspan="2" style="text-align:center;">Send mig en kopi <input type="checkbox" name="kopi"></td></tr>
<tr><td colspan="2" align="center"><input value="Send" type="submit"><input name="clear" value="Slet alt" title="Slet alt" type="reset"></td></tr></tbody></table></form>
<script type="text/javascript" src="kontakt/validerform.js"></script>
Teksten på mine sider er indsat på denne måde, med et recordset:

Kode: Vælg alt

<h1><?php echo $row_vis['titel']; ?></h1>
<p><?php echo $row_vis['tekst']; ?></p>
Når jeg indsætter koden ovenfor i databasen, så får jeg dette:

Kode: Vælg alt

UPDATE `web86-cspec`.`indhold` SET `tekst` = '<p>Kontaktoplysninger:</p>
<p>Mobildiskotek Creative Spectrum<br />Hostrupvej 30, Jejsing<br />6270 T&oslash;nder<br />E-mail: <a href="mailto:info@creativespectrum.dk">info@creativespectrum.dk</a></p>
</br>
<form method="post" action="kontakt/kontaktformular.php" name="formular" onsubmit="return validerform()">
<table width="475px">
<tbody> <tr><td style="width:100px;">Navn:</td><td><input name="navn" style="width:375px;" type="text" id="navn"></td></tr>
<tr><td>E-mail:</td><!--spamf?lde begynd--><td><span style="display: none;">Dette felt skal ikke udfyldes: <input name="email" type="text"><br></span><input name="epost" style="width:375px;" type="text" id="email"></td></tr><!--spamf?lde slut-->
<tr><td>Emne:</td><td><input name="emne" style="width:375px;" type="text" id="emne"></td></tr>
<tr><td>Besked:</td><td align="center"><textarea name="besked" style="width:375px; height:100px" rows="5" cols="40" id="besked"></textarea></td><[...]

KHIT
Entusiast
Entusiast
Indlæg:28
Tilmeldt:16. sep 2011, 18:34

Re: Validering af formular

Indlæg af KHIT » 28. jan 2012, 22:56

Kom lige i tanke om at jeg har noget javascript liggende i alle filerne, som sørger for at mit logo skifter farve når man kører musen henover, kan det være at systemet bliver forvirret, når jeg har et <script></script> i head, og så kommer det i body når jeg åbner kontaktsiden?
Hvis det kan være til nogen hjælp, kan jeg give dig alle filerne til min side, så kan du kigge på dem og så om der skulle være et problem, der gør at mit script ikke virker.

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Validering af formular

Indlæg af ThomasI » 29. jan 2012, 21:56

Hej igen,

jeg har haft lidt tid til at kigge på det, og fandt en smule småfejl - f.eks havde du glemt en { et sted som gjorde at din funktion ikke blev kørt ordenligt!...

Har dog fået det til at virke nu, med untagelse af special tegn validering af din email adresse... Den kan jeg ikke lige få til at virker...

Ellers så burde denne kode virke 100%...prøv selv at sætte den ind:

Kode: Vælg alt

<form method="post" action="http://www.google.com/" name="formular" onsubmit="return validerform()">
<table width="475px">
<tbody> <tr><td style="width:100px;">Navn:</td><td><input name="navn" style="width:375px;" type="text" id="navn"></td></tr>
<tr><td>E-mail:</td><!--spamf�lde begynd--><td><span style="display: none;">Dette felt skal ikke udfyldes: <input name="email" type="text"><br></span><input name="epost" style="width:375px;" type="text" id="email"></td></tr><!--spamf�lde slut-->
<tr><td>Emne:</td><td><input name="emne" style="width:375px;" type="text" id="emne"></td></tr>
<tr><td>Besked:</td><td align="center"><textarea name="besked" style="width:375px; height:100px" rows="5" cols="40" id="besked"></textarea></td></tr>
<tr><td colspan="2" style="text-align:center;">Send mig en kopi <input type="checkbox" name="kopi"></td></tr>
<tr><td colspan="2" align="center"><input value="Send" type="submit"><input name="clear" value="Slet alt" title="Slet alt" type="reset"></td></tr></tbody>
</table>
</form>
        
<script type="text/javascript">
           
         function validerform(){
             
             if (document.formular.navn.value == "") {
                 
                 alert ("dit navn er ikke udfyldt");
                 return false;
                 
             } 
             
             if (document.formular.email.value == "") {
                 
                 alert ("din e-mail er ikke udfyldt");
                 return false;
                 
             }
             
             if (document.formular.besked.value == "") {
                 
                 alert ("Da du benytter vores kontaktformular, udfyld venligst beskedfeltet");
                 return false;
                 
             }
             
            if (document.getElementById('navn').value.length < 2 )
        {
      alert("Skriv et ordentligt navn!");
                return false;
               }
               if (document.getElementById('email').value.length < 2 )
        {
      alert("Skriv en ordentlig e-mail adresse!");
                return false;
               } 
               
               
        var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
           
        for (var i = 0; i < document.formular.navn.value.length; i++) {
                if (iChars.indexOf(document.formular.navn.value.charAt(i)) != -1) {
                alert ("Det er ikke normalt at et navn indeholder specialtegn som ? og !");
                return false;
                 }
                 }                         
             if (document.formular.email.value != "" && document.formular.navn.value != "" && document.formular.besked.value != "") {
                 
                 return true;
                 
             }
                 
                
         } 
                      
       </script>

meld gerne tilbage om det fungerer...

KHIT
Entusiast
Entusiast
Indlæg:28
Tilmeldt:16. sep 2011, 18:34

Re: Validering af formular

Indlæg af KHIT » 30. jan 2012, 12:02

Jeg takker. Det virker jo helt som det skal :)

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Validering af formular

Indlæg af ThomasI » 30. jan 2012, 12:28

Pefekt! :D

Fortsat held og lykke med dit projekt!

Besvar