Avatar billede tweak Nybegynder
07. juli 2005 - 13:19 Der er 16 kommentarer og
1 løsning

Validere mail, navn, hvor har du, osv

Jeg har noget kode som jeg ikke helt kan hitte:

<!--
function MailTo(frm) {
    document.location.href='mailto:test@test.dk?body=Navn:%20'+frm.navn.value+'%0D%0AEmail:%20'+frm.email.value+'%0D%0AKommentar:%20'+frm.kommentar.value;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="Navn") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' skal indeholde en e-mail adresse.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+'\n'; }
  } if (errors) alert('Beskeden kan ikke sendes før du har udfyldt:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->



I mine tekstbokse står der: E-mail, Navn, Emne, Hvor har du set Digitalife og så kommer besked boksen. Det er sådan at teksten står i boksen, og når man så klikke i den- forsvinder teksten og kommer tilbage når man klikker uden for den.

Problemet er at de ikke må kunne sende beskeden, med teksten- Emne, Navn og Hvor har du set Digitalife.?

Jeg har fundet ud af det med Navne boksen sådan: if (val) { nm=val.name; if ((val=val.value)!="Navn") {

Men jeg kan ikke hitte de andre, kan I hjælpe mig.

Mine bokse hedder:

<input name = "Navn"
<input emne= "Emne"
<input hvor="hvor"

I kan se den her: http://www.digitalife.dk/mail.php
Avatar billede roenving Novice
07. juli 2005 - 13:32 #1
-- nu kender jeg ikke dreamweavers valideringsfunktion så godt, da jeg altid selv laver mine valideringer, men uden at kende definitionerne på test-argumenterne, kunne man gætte på denne:

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,def,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { def=val.defaultValue; nm=val.name; if ((val=val.value)!=def) {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' skal indeholde en e-mail adresse.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+'\n'; }
  } if (errors) alert('Beskeden kan ikke sendes før du har udfyldt:\n'+errors);
  document.MM_returnValue = (errors == '');
}
Avatar billede tweak Nybegynder
07. juli 2005 - 13:35 #2
hey roenving, det virker sq ;) kan du rette min fejlboks så den melder de rigtige fejl.?
Avatar billede roenving Novice
07. juli 2005 - 13:39 #3
Hvordan melder den forkert ?-)
Avatar billede tweak Nybegynder
07. juli 2005 - 13:42 #4
Hvis man trykker send uden at udfylde noget vises:

Beskeden kan ikke sendes før du har udfyldt
Navn
-
Besked


Dvs. Hvor har du set DigitaLife, Emne og E-mail mangler.
Avatar billede roenving Novice
07. juli 2005 - 13:44 #5
<input name="Navn"
<input name="Emne"
<input name="hvor"
Avatar billede tweak Nybegynder
07. juli 2005 - 13:50 #6
Så mangler jeg bare at E- mail også kommer første gang man ikke udfylder den og ikke først når alt andet er udfyldt. :)
Avatar billede roenving Novice
07. juli 2005 - 13:51 #7
Hvordan ser kaldet til valideringsfunktionen ud ?-)
Avatar billede roenving Novice
07. juli 2005 - 13:52 #8
-- det skal stå i onsubmit på formen ...
Avatar billede tweak Nybegynder
07. juli 2005 - 13:52 #9
Obs, man kan stadig sender med feltet "Hvor har du set DigitaLife" urørt.
Avatar billede tweak Nybegynder
07. juli 2005 - 13:55 #10
Sådan ser hele formen ud:

<form action="http://digitalife.dk/cgi-sys/FormMail-clone.cgi " method="post" name="mail" id="mail" onSubmit="MM_validateForm('Navn','','R','email','','RisEmail','Emne','','R','Besked','','R');return document.MM_returnValue">
<input type="hidden" name="title" value="Tak for din information.">
<input type="hidden" name="subject" value="Post fra DigitaLife.dk">
<input type="hidden" name="recipient" value="jlp@digitalife.dk" size="40" maxlength="40">
<input type="HIDDEN" name="redirect" value="http://www.digitalife.dk/tak.php">

<div class="kontakt"><span class="husk">Husk at udfylde alle felter.</span>
<input name = "E-mail" type = "text" id="email" class="input" value='E-mail' onfocus="if(this.value=='E-mail')this.value='';" onblur="if(this.value=='')this.value='E-mail';" >
<span class="test1"><input name = "Navn" type = "text" id="Navn" class="input" value='Navn' onfocus="if(this.value=='Navn')this.value='';" onblur="if(this.value=='')this.value='Navn';" ></span>
<input name = "Emne" type = "text" id="Emne" class="input" value='Emne' onfocus="if(this.value=='Emne')this.value='';" onblur="if(this.value=='')this.value='Emne';" >
<input name = "hvor" type="text" id="hvor" class="input" value='Hvor har du set DigitaLife?' onfocus="if(this.value=='Hvor har du set DigitaLife?')this.value='';" onblur="if(this.value=='')this.value='Hvor har du set DigitaLife?';" >
<textarea name = "Besked" cols="30" rows = "8" id="Besked" class="beskedfelt"></textarea>
<input name="submit" type = "submit" id="submit" onClick="MM_validateForm('Navn','','R','Emne','','R','Besked','','R');return document.MM_returnValue" value = "Send besked" class="send">
<input name="reset" type = "reset" id="reset" value = "Fortryd" class="fortryd">
</div></form>
Avatar billede roenving Novice
07. juli 2005 - 14:04 #11
Rent gætværk, for komprimerede javascript-funktioner er for svære at debugge:

<form action="http://digitalife.dk/cgi-sys/FormMail-clone.cgi " method="post" name="mail" id="mail" onSubmit="MM_validateForm('Navn','','R','email','','RisEmail','Emne','','R','Besked','','R','hvor','','R');return document.MM_returnValue">
<input type="hidden" name="title" value="Tak for din information.">
<input type="hidden" name="subject" value="Post fra DigitaLife.dk">
<input type="hidden" name="recipient" value="jlp@digitalife.dk" size="40" maxlength="40">
<input type="HIDDEN" name="redirect" value="http://www.digitalife.dk/tak.php">

<div class="kontakt"><span class="husk">Husk at udfylde alle felter.</span>
<input name="email" type="text" id="email" class="input" value='E-mail' onfocus="if(this.value=='E-mail')this.value='';" onblur="if(this.value=='')this.value='E-mail';" >
<span class="test1"><input name="Navn" type="text" id="Navn" class="input" value='Navn' onfocus="if(this.value=='Navn')this.value='';" onblur="if(this.value=='')this.value='Navn';" ></span>
<input name="Emne" type="text" id="Emne" class="input" value='Emne' onfocus="if(this.value=='Emne')this.value='';" onblur="if(this.value=='')this.value='Emne';" >
<input name="hvor" type="text" id="hvor" class="input" value='Hvor har du set DigitaLife?' onfocus="if(this.value=='Hvor har du set DigitaLife?')this.value='';" onblur="if(this.value=='')this.value='Hvor har du set DigitaLife?';" >
<textarea name="Besked" cols="30" rows="8" id="Besked" class="beskedfelt"></textarea>
<input name="submit" type="submit" id="submit" value="Send besked" class="send">
<input name="reset" type="reset" id="reset" value="Fortryd" class="fortryd">
</div></form>
Avatar billede roenving Novice
07. juli 2005 - 14:04 #12
-- jeg kan dog ikke se, hvorfor den ikke tester beskeden !-)
Avatar billede tweak Nybegynder
07. juli 2005 - 14:07 #13
roenving, den tester også beskeden.! Jeg prøver lige med det du har skrevet ;)
Avatar billede tweak Nybegynder
07. juli 2005 - 14:13 #14
roenving, nu virker det hele som det skal.! Tak for hjælpen.!! Gider du smide et svar.?
Avatar billede roenving Novice
07. juli 2005 - 14:18 #15
Velbekomme '-)
Avatar billede roenving Novice
07. juli 2005 - 14:22 #16
-- og tak for point ;~}
Avatar billede tweak Nybegynder
07. juli 2005 - 21:53 #17
Det er mig som takker.!
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