Avatar billede saxbjorn Nybegynder
14. april 2005 - 13:35 Der er 38 kommentarer og
1 løsning

Validering af tekstfelt

Hej Søde eksperter

Jeg har problemer... igen
Denne gang med en form der ikke sender mail via .PHP, hvis javascript validering findes på formen... Hvad gør jeg??
Jeg se godt nok siden med "tak for din... bla bla bla..."
men jeg modtager ikke nogen mail... har jeg skrevet noget forkert under <form method="post" action="mailingliste.php" onsubmit="validering();return false;">
??????????

Er I søde at hjælpe
- Charlotte

<head>
<META NAME="Generator" CONTENT="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link href="../../../styles/framestyle.css" rel="stylesheet">
<title></title>

<script type="text/javascript">
function validering()
  {
  error = 0;

  if((document.forms[0].email.value=='email') && (error==0)) 
  {       
    alert('email skal udfyldes');
    document.forms[0].email.focus();
    error = 1;       
  }
 
  if(error == 0)
  document.forms[0].submit();   
  }

</script>
</head>

<body bgcolor="#ffffff">

<table border="0" style="border-collapse: collapse" bordercolor="#111111" width="69%" height="157">
  <tr class="text">
    <td width="50%" height="9">
                <form method="post" action="mailingliste.php" onsubmit="validering();return false;">
<input type="text" name="email" size="29" style="font-size: 8 pt; font-family: Tahoma; border: 1px solid #000000; " value="email" onfocus="if(this.value=='email')this.value='';"><style="font-family: Verdana; font-size: 10 px"><font size="1">
    *</font></td>
  </tr>
<tr class="text">
    <td width="50%" height="8" style="border-right-style: none; border-right-width: medium"> 
<input type="text" name="fullname" size="29" style="font-size: 8 pt; font-family: Tahoma; border: 1px solid #000000; " onfocus="if(this.value=='navn')this.value='';" value="navn"><style="font-family: Verdana; font-size: 10 px"><font size="1">
    *</font></tr>

<tr class="text">
    <td width="50%" height="8" style="border-right-style: none; border-right-width: medium"> 
                <style="font-family: Verdana; font-size: 10 px">
                <font size="1">
<select size="1" name="klubblad" style="font-family: Verdana; font-size: 10 px">
  <option selected>Ønsker</option>
  <option>tilmelde</option>
  <option>afmelde</option>
  </select></font><style="font-family: Verdana; font-size: 10 px"><font size="1"> </font><style="font-family: Verdana; font-size: 10 px"><font size="1">
    * </font></tr>

<tr class="tabelfont">
    <td width="50%" height="68">
<textarea rows="5" name="besked" id="tabel" cols="47" style="font-family: Tahoma; font-size: 8 pt; border: 1px solid #000000; " tabindex="5">kommentar</textarea></td>
  </tr>
<tr class="tabelfont">
    <td width="50%" height="22" style="border-right-style: none; border-right-width: medium">
<input type="submit" value="Send" name="send" style="font-family: Tahoma; font-size: 8 pt; font-weight: bold; background-color: #FFFFFF; border: 1px solid #000000; ">&nbsp;&nbsp;
<input type="reset" value="Nulstil" name="reset" style="font-family: Tahoma; font-size: 8 pt; font-weight: bold; background-color: #FFFFFF; border: 1px solid #000000; ">
  </tr>
</table>

                </td>
        </tr>
      </table>
      </div>
  </td>
  </tr>
</table>
</div>
</body>
</html>
Avatar billede articfruit Nybegynder
14. april 2005 - 13:52 #1
jeg er ikke stærk i javascript, men vil mene det skal laves sådan her i stedet...!?

function validering()
  {
  if((document.forms[0].email.value=='email') && (error==0)) 
  {       
    alert('email skal udfyldes');
    document.forms[0].email.focus();
    return false;     
  }
return true;
  }

<form method="post" action="mailingliste.php" onsubmit="validering();">
Avatar billede saxbjorn Nybegynder
14. april 2005 - 14:08 #2
så kommer der ingen validering..... Den henter bare php filen og viser "tak for din henvendelse..." siden
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 14:17 #3
prøv at tjekke det:
<script type="text/javascript">
function validering()
  {
  error = 0;

  if((document.forms[0].email.value=='email') && (error==0)) 
  {       
    alert('email skal udfyldes');
    document.forms[0].email.focus();
    error = 1;       
  }
 
  if(error == 0)
  document.forms[0].submit();   
  }

</script>

og dette sammen.
<form method="post" action="mailingliste.php" onsubmit="validering();return false;">

Du har ingen retur værdier i din valideringsmetode, hvilket vil sige den aldrig vil submitte din form, fordi du efterfølgende returnere false.

articfruit er inde på noget af det rigtige, med at returnere true hvis det går godt og false hvis det ikke gør.
Tror du ikke bare der er rod i din validering, og det du har skrevet faktisk gik godt, og den derfor røg videre i systemet?
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 14:20 #4
prøv denne funktion i stedet

<script type="text/javascript">
function validering()
  {
  error = 0;

  if((document.forms[0].email.value=='email') && (error==0) || document.forms[0].email.value=='') 
  {       
    alert('email skal udfyldes');
    document.forms[0].email.focus();
    error = 1;       
  }
 
  if(error == 0)
  document.forms[0].submit();   
  }

</script>

du manglede at tjekke om feltet var tomt også.
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 14:23 #5
Dog burde du foretage en bedre email validering end det:)

prøv at kigge her, der er gratis kode, og et eksempel.
http://www.smartwebby.com/DHTML/email_validation.asp
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 14:25 #6
ellers søg på:
http://www.google.dk/search?hl=da&q=javascript+email+validate&meta=

der finder du hurtigt noget lækkert:)
Avatar billede saxbjorn Nybegynder
14. april 2005 - 14:29 #7
http://www.pgi4180.dk/motion.htm

Prøv linket... der valideres, men brugeren kan ikke nå at udfylde feltet...
Avatar billede saxbjorn Nybegynder
14. april 2005 - 14:31 #8
Glem det...
Avatar billede saxbjorn Nybegynder
14. april 2005 - 14:33 #9
http://www.pgi4180.dk/motion.htm

Gå under Kontakt/Mailingliste
der valideres, men brugeren kan ikke nå at udfylde feltet på formen
...
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 14:42 #10
du har et </script> tag for meget nu

plus, (pinligt), jeg glemte at returnere true, eller false...

Det her virker, har lige testet det:
function validering()
{
  if((document.forms[0].email.value=='email') && (error==0) || document.forms[0].email.value=='') 
  {       
    alert('email skal udfyldes');
    document.forms[0].email.focus();
    return false;     
  }

    return true;
}

Desuden mangleder der en "return" foran funktionskaldet.
<form method="post" action="mailingliste.php" onsubmit="return validering();">
Avatar billede articfruit Nybegynder
14. april 2005 - 14:53 #11
function validering()
{
  if((document.forms[0].email.value=='email') || document.forms[0].email.value=='') 
  {       
    alert('email skal udfyldes');
    document.forms[0].email.focus();
    return false;     
  }

    return true;
}

>>skyggen2000

lavede selv fejlen også, men der skal lige slettes && (error==0) , da det ikke give mening længere... ;o)
Avatar billede saxbjorn Nybegynder
14. april 2005 - 14:53 #12
Har lige rettet det... prøv igen på http://www.pgi4180.dk/motion.htm
Det virker ikke...
Avatar billede saxbjorn Nybegynder
14. april 2005 - 14:54 #13
http://www.pgi4180.dk/motion.htm

Gå under Kontakt/Mailingliste
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 14:56 #14
det virker da fint nu i hvert fald...

articfruit >>
hehe, det går nogengange lidt stærkt:)
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 15:04 #15
Desuden bør du undgå reserverede navne som error, object, value, til dine var navne.
Avatar billede articfruit Nybegynder
14. april 2005 - 15:06 #16
skyggen2000
hvorfor sådan:
<form method="post" action="mailingliste.php" onsubmit="return validering();">
og ikke sådan:
<form method="post" action="mailingliste.php" onsubmit="validering();">

? Kender ikke så meget til det, skal bare lige have det forklaret :o)
Avatar billede saxbjorn Nybegynder
14. april 2005 - 15:07 #17
Det virker rigtig godt!! Super... takker

Har lige et tillægs spg.

Hvis jeg nu har to felter der skal valideres på, hvor lægger jeg så den næste valideringskode??

function validering()
{
  if((document.forms[0].email.value=='email') || document.forms[0].email.value=='') 
  {       
    alert('email skal udfyldes');
    document.forms[0].email.focus();
    return false;     
  }


  if((document.forms[0].nytfelt.value=='nytfelt') || document.forms[0].nytfelt.value=='') 
  {       
    alert('feltet skal udfyldes');
    document.forms[0].nytfelt.focus();
    return false;     
  }

    return true;
}


eller.....??
Avatar billede saxbjorn Nybegynder
14. april 2005 - 15:21 #18
Du får lige point...
Avatar billede articfruit Nybegynder
14. april 2005 - 15:31 #19
helt rigtigt lavet... :o)
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 15:32 #20
articfruit >>
fra msdn:
You can override this event by returning false in the event handler. Use this capability to validate data on the client side to prevent invalid data from being submitted to the server. If the event handler is called by the onsubmit attribute of the form object, the code must explicitly request the return value using the return function, and the event handler must provide an explicit return value for each possible code path in the event handler function.

The submit method does not invoke the onsubmit event handler.

Sådan er syntaksen, hvis man vil man vil benytte eventen.
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 15:33 #21
yes, det er sådan det skal gøres:)

Husk at lave en ordentlig email validering, vha. det link jeg postede.
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 15:37 #22
denne linie er rimelig vigtigt, da man kan se man skal klikke på submit knappen for at onsubmit eventen køres.

The submit method does not invoke the onsubmit event handler.

Det er ikke nok, blot at submitte ved at kalde funkionen i javascript.
Avatar billede articfruit Nybegynder
14. april 2005 - 15:39 #23
:o) så blev jeg også lidt klogere i dag...
Avatar billede saxbjorn Nybegynder
14. april 2005 - 15:39 #24
det virker ikke med validering på to felter.... gggrrr :-(
Avatar billede saxbjorn Nybegynder
14. april 2005 - 15:41 #25
har jeg overset noget??
Kun email validering virker ok... den validere ikk på feltet navn :-(
Avatar billede articfruit Nybegynder
14. april 2005 - 15:49 #26
navn og fullname er ikke det samme... ;o)
Avatar billede articfruit Nybegynder
14. april 2005 - 15:50 #27
if((document.forms[0].navn.value=='navn') || document.forms[0].navn.value=='') 

men du kalder den...

<input type="text" name="fullname"
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 15:52 #28
:) Det stod faktisk i fejlmeddelesen, men der er ingen der har sagt det er nemt at programmere:)

du skal skrive:

if((document.forms[0].fullname.value=='navn') || document.forms[0].fullname.value=='') 

som articfruit skriver.
Avatar billede saxbjorn Nybegynder
14. april 2005 - 16:02 #29
GODT VI HAR EKSPERTER! Tak! Du har ret... somme tider går det lidt for stærkt
:-)
er lidt "hys" over det - tager lige en pause :-))

Ups... point smuttede lige - skriv lige svar igen...
- Charlotte
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 16:05 #30
Hvad er det du mener med pointene?

Jeg kan ikke svare igen...:)

Og det er hvad der kan ske når man koder, det går galt for alle, og hvis ikke det gør så er det fordi man har lavet fejlen så mange gange, at den sidder fast efterhånden:)
Avatar billede saxbjorn Nybegynder
14. april 2005 - 16:08 #31
Hvis jeg har en dropdown med default "Ønsker" (Tilmelde eller Afmelde) hvordan skal det så se ud??
Avatar billede saxbjorn Nybegynder
14. april 2005 - 16:09 #32
du fik da ikk point..?
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 16:10 #33
Der står faktisk:

Accepteret svar: skyggen2000
14/04-2005 15:33:49
Point: 200,00

To much cofee:)

Hvad mener du, som validering eller kode til oprettelsen.
Avatar billede saxbjorn Nybegynder
14. april 2005 - 16:19 #34
Koden for valideringen af en dropdown... som validering af tekst
...nu vil jeg bare være færdig! :-)
Avatar billede saxbjorn Nybegynder
14. april 2005 - 16:20 #35
Har skrevet

if((document.forms[0].klubblad.value=='')) 
  {       
    alert('Ønsker du at "Tilmelde" eller "Afmelde" klubblad?');
    document.forms[0].klubblad.focus();
    return false;       
    }

men den kommer bare hele tiden kun med alert'en
Avatar billede saxbjorn Nybegynder
14. april 2005 - 16:20 #36
troede du missede point...
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 16:26 #37
den er gal med din select, du skal huske at tilføje værdier til de enkelte options.

<select size="1" name="klubblad" style="font-family: Verdana; font-size: 10 px">
  <option selected value="">Ønsker</option>
  <option value="tilmeld">tilmelde</option>
  <option value="afmeld">afmelde</option>
  </select>

det funkede hos mig
Avatar billede saxbjorn Nybegynder
14. april 2005 - 16:30 #38
DET GØR DEN OSS HER...JUUBiiii

Tak for en hyggelig eftermiddag - og din tålmodighed :-)
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 16:31 #39
Selv tak og det var da så lidt:)
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