Avatar billede tirra Nybegynder
14. februar 2004 - 23:37 Der er 9 kommentarer og
1 løsning

Validering i Jmail form

Jeg har lige fået en Jmail-form at fungere. Det var med "100% hjælp" fra eagleeye. Se http://www.eksperten.dk/spm/465310

Nu ku jeg tænke mig at få formen udvidet med en validering i mail feltet, der hvor klienten skal skrive sin mail-adresse.
Jeg ku tænke mig et pop-vindue med f.eks. teksten "Du glemte din mailadresse".
Og brugeren skal da ikke få tak.asp filen før mailadressen er skrevet i formen.

Som det er nu får man fejlmelding hvis man glemmer mailadressen, man får: The message was undeliverable. All servers failed to receive the message


Håber det er til at forstå :)
Avatar billede tirra Nybegynder
14. februar 2004 - 23:42 #1
Det er kun klientens mailadresse som skal valideres, eks. skal der være: @ og .dk i mailadressen

Formen ser sådan ud uden validering:
<%
If Request.ServerVariables("Request_Method") = "POST" Then
  email = Request.Form("email")
  Overskrift = Request.Form("overskrift")
  fornavn = Request.Form("fornavn")
  efternavn = Request.Form("efternavn")
  Adresse = Request.Form("adresse")
  Postnummer = Request.Form("postnummer")
  By = Request.Form("by")
  besked = Request.Form("besked")

  body = "Hej " & vbCrLf
  body = body & "Navn : " & fornavn & " " & efternavn & vbCrLf
  body = body & "Email : " & email & vbCrLf
  body = body & "Adresse : " & Adresse & vbCrLf
  body = body & "Postnummer : " & Postnummer & vbCrLf
  body = body & "By : " & by & vbCrLf
  body = body & "Beksed: " & vbCrLf & besked & vbCrLf & vbCrLf
  body = body & "Mvh. Din side"

    Set JMail = Server.CreateObject("JMail.SMTPMail")
    JMail.ServerAddress = "127.0.0.1"
    JMail.SenderName = Request.Form("fornavn") & " " & Request.Form("efternavn")
    JMail.Sender = Request.Form("email")
    JMail.AddRecipientEx "kk@da.dk", "Fra hjemmesiden"
    JMail.Subject = "Fra hjemmesiden"
    JMail.Body = body
   
    Email = Request.Form("email")
    If Trim(Email) = "" Then Email = "kk@da.dk"
   
    JMail.Sender = Email
   
    JMail.Execute
   
    JMail.Close
    Set JMail = Nothing
   
    Response.Redirect("Tak.asp")
End If
%>

<form method="POST" action="<%=Request.ServerVariables("SCRIPT_NAME")%>">
<table>
<tr><td>Fornavn:</td><td><input type="text" name="fornavn"></td></tr>
<tr><td>Efternavn:</td><td><input type="text" name="efternavn"></td></tr>
<tr><td>Adresse:</td><td><input type="text" name="adresse"></td></tr>
<tr><td>By:</td><td><input type="text" name="by"></td></tr>
<tr><td>Postnummer:</td><td><input type="text" name="postnummer"></td></tr>
<tr><td>Email:</td><td><input type="text" name="email"></td></tr>
<tr><td>Besked:</td><td><textarea name="besekd" cols="20" rows="6"></textarea></td></tr>
<tr><td></td><td><input type="submit" name="Send" value="Send"></td></tr>
</table>
</form>
Avatar billede eagleeye Praktikant
14. februar 2004 - 23:52 #2
Det er et par måder at lave det.
1. Som et javascript som validere inden formen sendes om feltet er udfyldt
2. Som ASP kode når formen er sendt så tjekker man om den er udfyldt.

man kan også lave begge dele :)
Avatar billede tirra Nybegynder
15. februar 2004 - 00:21 #3
eagleeye > er det et større projekt at få med ?
Så har jeg måske stillet et urimeligt spørgsmål ;)
Jeg vil da gerne gi nogen extra points
Avatar billede eagleeye Praktikant
15. februar 2004 - 00:30 #4
Nej det ikke urimeligt :)
Her med Javascript som validere email adressen inden formen sendes:


<%
If Request.ServerVariables("Request_Method") = "POST" Then
  email = Request.Form("email")
  Overskrift = Request.Form("overskrift")
  fornavn = Request.Form("fornavn")
  efternavn = Request.Form("efternavn")
  Adresse = Request.Form("adresse")
  Postnummer = Request.Form("postnummer")
  By = Request.Form("by")
  besked = Request.Form("besked")

  body = "Hej " & vbCrLf
  body = body & "Navn : " & fornavn & " " & efternavn & vbCrLf
  body = body & "Email : " & email & vbCrLf
  body = body & "Adresse : " & Adresse & vbCrLf
  body = body & "Postnummer : " & Postnummer & vbCrLf
  body = body & "By : " & by & vbCrLf
  body = body & "Beksed: " & vbCrLf & besked & vbCrLf & vbCrLf
  body = body & "Mvh. Din side"

    Set JMail = Server.CreateObject("JMail.SMTPMail")
    JMail.ServerAddress = "127.0.0.1"
    JMail.SenderName = Request.Form("fornavn") & " " & Request.Form("efternavn")
    JMail.Sender = Request.Form("email")
    JMail.AddRecipientEx "kk@da.dk", "Fra hjemmesiden"
    JMail.Subject = "Fra hjemmesiden"
    JMail.Body = body
   
    Email = Request.Form("email")
    If Trim(Email) = "" Then Email = "kk@da.dk"
   
    JMail.Sender = Email
   
    JMail.Execute
   
    JMail.Close
    Set JMail = Nothing
   
    Response.Redirect("Tak.asp")
End If
%>


<html>
<body>
<script language="JavaScript1.2" type="text/javascript">
<!--
function verifyemail_check(str) {
if(!str.match(/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,6}$/i)) {
  return false;
} else {
  return true;
}
}

function validate_form(form) {
if (!verifyemail_check(form.email.value)) {
  alert("Den indtastede email er ikke gyldig !");
  form.email.focus();
  return false;
}
return true;
}
//-->
</script>

<form method="POST" action="<%=Request.ServerVariables("SCRIPT_NAME")%>" onSubmit="return validate_form();">
<table>
<tr><td>Fornavn:</td><td><input type="text" name="fornavn"></td></tr>
<tr><td>Efternavn:</td><td><input type="text" name="efternavn"></td></tr>
<tr><td>Adresse:</td><td><input type="text" name="adresse"></td></tr>
<tr><td>By:</td><td><input type="text" name="by"></td></tr>
<tr><td>Postnummer:</td><td><input type="text" name="postnummer"></td></tr>
<tr><td>Email:</td><td><input type="text" name="email"></td></tr>
<tr><td>Besked:</td><td><textarea name="besekd" cols="20" rows="6"></textarea></td></tr>
<tr><td></td><td><input type="submit" name="Send" value="Send"></td></tr>
</table>
</form>
</body>
</html>
Avatar billede tirra Nybegynder
15. februar 2004 - 01:29 #5
eagleeye > Jeg kan ikke få den til at virke, den sender mail uanset om der er skrevet i mail-feltet eller ej, også om alle felter er "tomme" ;)
Avatar billede tirra Nybegynder
15. februar 2004 - 01:31 #6
Må desværre stoppe nu, vender tilbage i morgen, på forhånd tak :)
Avatar billede eagleeye Praktikant
15. februar 2004 - 12:16 #7
Der var en lille fejl i kaldet til funktion og den føste funktion tjekkede kun email adreseen.

Prøv med dette fra <html> og ned den tjekke alle felterne undtagen besked feltet:


<html>
<body>
<script language="JavaScript1.2" type="text/javascript">
<!--
function verifyemail_check(str) {
if(!str.match(/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,6}$/i)) {
  return false;
} else {
  return true;
}
}

function validate_form(form) {
if (!(form.fornavn.value)) {
  alert("Du mangler at indtaste fornavn !");
  form.fornavn.focus();
  return false;
}
if (!(form.efternavn.value)) {
  alert("Du mangler at indtaste efternavn !");
  form.efternavn.focus();
  return false;
}
if (!(form.adresse.value)) {
  alert("Du mangler at indtaste adresse !");
  form.adresse.focus();
  return false;
}
if (!(form.by.value)) {
  alert("Du mangler at indtaste by !");
  form.by.focus();
  return false;
}
if (!(form.postnummer.value)) {
  alert("Du mangler at indtaste postnummer !");
  form.postnummer.focus();
  return false;
}

if (!verifyemail_check(form.email.value)) {
  alert("Den indtastede email er ikke gyldig !");
  form.email.focus();
  return false;
}
return true;
}
//-->
</script>

<form method="POST" action="<%=Request.ServerVariables("SCRIPT_NAME")%>" onSubmit="return validate_form(this);">
<table>
<tr><td>Fornavn:</td><td><input type="text" name="fornavn"></td></tr>
<tr><td>Efternavn:</td><td><input type="text" name="efternavn"></td></tr>
<tr><td>Adresse:</td><td><input type="text" name="adresse"></td></tr>
<tr><td>By:</td><td><input type="text" name="by"></td></tr>
<tr><td>Postnummer:</td><td><input type="text" name="postnummer"></td></tr>
<tr><td>Email:</td><td><input type="text" name="email"></td></tr>
<tr><td>Besked:</td><td><textarea name="besekd" cols="20" rows="6"></textarea></td></tr>
<tr><td></td><td><input type="submit" name="Send" value="Send"></td></tr>
</table>
</form>
</body>
</html>
Avatar billede tirra Nybegynder
15. februar 2004 - 15:27 #8
eagleeye > takker for udmærked løsning
Vil gerne gi points
Avatar billede eagleeye Praktikant
15. februar 2004 - 15:29 #9
Ok , så laver jeg lige et svar :)
Avatar billede tirra Nybegynder
16. februar 2004 - 22:24 #10
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
Kurser inden for grundlæggende programmering

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