Just nu i M3-nätverket
Gå till innehåll

Problem med mitt ASP Formulär


Mattias1980

Rekommendera Poster

Hej,

 

hoppas det finns någon vänlig själ som kan hjälpa mig med mitt lilla bekymmer

 

Jag har idag ca 50st ASP formulär som verksamheten använder dagligen för att skicka in beställningar till vår IT-avdelning.

 

Jag har i detta formulär idag 3st fält med krav på som beställaren måste fylla i.

 

Jag vill ha en liknande funktion på de "checkboxes" som finns med i formuläret och att om det är möjligt minst 1 av dom måste vara ibockad för att mailet ska skickas iväg.

Som det ser ut nu så räcker det med att dom fyller i uppgifter i textfälten men det finns inget krav på att dom måste bocka i någon av de tre checkboxarna som finns med.

 

Här kommer koden för själva beställningsformuläret:

<br>
*</span>= Obligatorisk information. Felaktig/ej komplett ifylld information kan leda till 
att beställningen <strong>ej expideras</strong>.<br>
</span></span><span class="style4">
</p>
<%
' TA EMOT SVAR FRÅN MAILSKRIPTET'
strMissing = Request.QueryString("missing")
strError = Request.QueryString("error")

' OM ALLT GICK BRA'
IF Request("sendmail")="completed" THEN 
Response.Write("<div class=""messageBox success""><p style=""text-align:center;""><strong>Din beställning har skickats!</strong></p></div>")
ELSE
' OM NÅGOT GICK FEL'
IF Request("sendmail")="failed" THEN
 Response.Write("<div class=""messageBox error"">")
 Response.Write("<p class=""heading"">Ett fel uppstod!</p>")
 IF strError="missingFields" THEN
  ' Skriver ut vilka obligatoriska fält som saknas (beroende på svar från sendmail.asp)  '
  Response.Write("<p> Obligatoriska uppgifter saknas.<br> Du måste ange:</p><ul>")

  IF inStr(strMissing,"Kostnadsställeansvarig")>0 THEN Response.Write("<li>SSSID på den person som lägger avbeställningen</li>")
  IF inStr(strMissing,"Beställare")>0 THEN Response.Write("<li>Namn på den person avbeställningen avser</li>")
  IF inStr(strMissing,"SSSID")>0 THEN Response.Write("<li>SSSID på den person avbeställningen avser</li>")

  Response.Write("</ul>")
 END IF
 IF strError="unknown" THEN
  ' Skriver ut att okänt fel uppstod '
  Response.Write("<p class=""heading"">Anledning okänd, meddelandet kunde ej skickas.</p>")
 END IF
 Response.Write("</div>")
END IF
%>
<form action="sendmail.asp" method="post" id="contactForm" style="width: 633px">
  </span>
 <strong><span class="style9">SSSID på den person som lägger avbeställningen:<br>
 </span></strong>
 <table style="width: 600px; height: 30px">
  <tr>
   <td style="width: 10%; text-align: right;" style="text-align:right" class="style4">
   SSSID:</td>
   <td><span class="style7">
   <span class="style4">
   <input name="Kostnadsställeansvarig" maxlength="6" style="width: 80px"></span></span> <sup><span class="style6"><strong>*</strong></span></sup></td>
  </tr>
  </table><span class="style4"><br>
  </span>
 <span class="style9"><strong>Användare som avbeställningen avser:<br>
 </strong></span>
 <table style="width: 600px; height: 60px">
  <tr>
   <td style="width: 10%" style="text-align:right" class="style4">
   Namn:</td>
   <span class="style5">
   <td><span class="style7"><span class="style4"><input name="Beställare" style="width: 220px"></span></span> <sup><span class="style6"><strong>*</strong></span></sup></td>
   </span><span class="style3"><span class="style5">
  <tr>
   <td style="width: 10%" style="text-align:right" class="style4">
   SSSID:</td>
   <td class="style5"><span class="style7">
   <span class="style4">
   <input name="SSSID" maxlength="6" style="width: 80px"></span></span> <sup><span class="style6"><strong>*</strong></span></sup><td>
   <span class="style4">
   </span></td></span><span class="style3"><span class="style5">

 </span></span></span></table><span class="style4"><br>
  </span>
  <strong>
 <span class="style9">Beställningsinformation:<br>
  <br> 
  </span>

 </strong>

  <span class="style4">Jag vill avbeställa följande behörighet i Prossess:</span><table style="width: 600px; height: 90px">
   <tr>
    <td style="width: 5%" class="style8"><span class="style7">
    <span class="style4"><input type="checkbox" name="Lastbil" value="Prossess för Lastbil"></span></span><span class="style4"> </span></td>
    <td>Lastbil</td>
   </tr>
   <tr>
    <td style="width: 5%" class="style8"><span class="style7">
    <span class="style4"><input type="checkbox" name="Buss" value="Prossess för Buss"></span></span><span class="style4"> </span></td>
    <td>Buss</td>
   </tr>
   <tr>
    <td style="width: 5%" class="style8"><span class="style7">
    <span class="style4"><input type="checkbox" name="Alla" value="Alla behörigheter i Prossess"></span></span><span class="style4"> </span></td>
    <td>Alla behörigheter</td>
   </tr>

  </table>  <strong><span class="style9"><br>
  Övrig information:</span></strong> <span class="style4"> <br>
  </span>
  <span class="style7">
  <span class="style4">
 <input name="övrig information" style="width: 420px"></span></span>
  <span class="style4">
 <br>
  </span>
 <p style="text-align:left">
  <span class="style7">
  <span class="style4">
  <input type="submit" value="Skicka meddelande"></span></span><span class="style4">
  </span>
       </p>
        <span class="style7">
        <span class="style4">
       <input type="hidden" name="action" value="doSend">
  </span>
  </span>
</form>
<% END IF %>
</body></html>

 

Kod för att skicka mailet:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
'----------------------| INSTÄLLNINGAR |-----------------------------

' Anpassa dessa att motsvara din mailleverantör '
myMailServer = "min.doman.com"
myUsername = "anvandarnamn"
myPassword = "losenord"
intServerPort = 25

' Namn på filen med formuläret '
strFormPage = "Prossesstabort.asp"

' Standardavsändare av mailet '
strMailSender = "Avbeställning Prossess <_>"

' Standardärende för mailets '
strMailSubject = "Avbeställning Prossess"

' E-Postadress till mottagaren av formuläret '
strMailRecipient = "minmail.com"

' Obligatoriska formulärfält (namnen avgränsas med kommatecken) '
strRequiredFields = "kostnadsställeansvarig,Beställare,SSSID"

'--------------------------------------------------------------------

IF Request.Form("action")<>"doSend" THEN
  ' BESÖKAREN KOM EJ FRÅN FORMULÄRET PÅ RÄTT SÄTT '
  ' Skickar tillbaks till formulärsidan '
  strGoToPage = strFormPage&"?sendmail=failed"
ELSE
  ' KOLLAR ATT ALLA FÄLT ÄR KORREKT IFYLLDA '
  allFieldsOk = True
  haveMissingFields = False
  FOR Each item IN Request.Form
     ' Strunta i vissa standardformulärvärden '
     IF lCase(item)<>"submit" AND lCase(item)<>"action" THEN
        ' Kolla om obligatoriska fält är ifyllda '
        IF inStr(lCase(strRequiredFields),lCase(item))>0 AND Trim(Request.Form(item))="" THEN
           allFieldsOk = False
           haveMissingFields = True
           strMissing = strMissing & item & ","
        END IF
        ' Skapa en sträng med alla formulärfält och deras värden '
        IF trim(request.form(item))<>"" THEN
           strFormFields = strFormFields & uCase(item) & ": " & Trim(Request.Form(item)) & vbCrLf
        END IF
     END IF
  Next
  IF haveMissingFields THEN
     strMissing = "&missing="&strMissing
     strMailError = strMailError & "missingFields,"
  END IF
  IF Right(strMissing,1)="," THEN strMissing=Left(strMissing, (len(strMissing)-1)) END IF

  ' Här skulle man kunna kolla att det är en korrekt formaterad e-postadress '
  IF 1=0 THEN
     allFieldsOk = False
     strMailError = strMailError & "faultyEmail,"
  END IF

  IF NOT allFieldsOk THEN
     ' FEL PÅ NÅGOT INMATAT '
     ' Skicka tillbaks till formulärsidan med felmeddelande '
     strMailError = "&error="&strMailError
     IF Right(strMailError,1)="," THEN strMailError=Left(strMailError, (len(strMailError)-1)) END IF
     strGoToPage = strFormPage&"?sendmail=failed"&strMailError&strMissing
  ELSE
     ' SKAPA MAILETS INNEHÅLL '
     strMailBody = ""&_
        "Avbeställning Prossess "&vbCrLf&_
        "=========================================="&vbCrLf&_
        "SSSID på den person som lägger avbeställningen: "&vbCrLf&_

        "SSSID: "&Request.Form("Kostnadsställeansvarig")&vbCrLf&_  
        "=========================================="&vbCrLf&_

           "Namn på den person som avbeställningen avser: "&vbCrLf&_
        "Namn: "&Request.Form("Beställare")&vbCrLf&_ 
        "SSSID: "&Request.Form("SSSID")&vbCrLf&_ 
        "=========================================="&vbCrLf&_

        "Beställningsinformation: "&vbCrLf&_
        "Jag vill avbeställa följande behörighet i Prossess: "&vbCrLf&_

        ""&Request.Form("Lastbil")&vbCrLf&_ 
        ""&Request.Form("Buss")&vbCrLf&_
        ""&Request.Form("Alla")&vbCrLf&_ 
        "=========================================="&vbCrLf&_

        "Övrig information: "&vbCrLf&_
        ""&Request.Form("övrig information")&vbCrLf&_ 


        "=========================================="&vbCrLf

     ' SKAPAR HTML-FORMATERAT INNEHÅLL '
     strHTMLbody=Replace(strMailBody, vbCrLf, "<br>")
     strHTMLbody=Replace(strHTMLbody, " ", " ")   

     ' SKAPAR MAILET MED INSTÄLLNINGAR OCH SKICKAR DET '
     cdoAnonymous = 0
     cdoBasic = 1
     cdoNTLM = 2 
     cdoSendUsingPickup = 1
     cdoSendUsingPort = 2
     SET objMail = server.CreateObject("CDO.message")
     SET objConf = server.CreateObject("CDO.configuration")
     objMail.TextBody = strMailBody
     objMail.HTMLBody = strHTMLbody
     objMail.From = Request.Form("Beställare") &" " &Request.Form("SSSID")
     objMail.Sender = strMailSender
     objMail.Subject = strMailSubject
     objMail.To = strMailRecipient
     objConf.Fields.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
     objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = myMailServer
     objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = intServerPort
     objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
     objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = myUsername
     objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = myPassword
     objMail.Configuration = objConf
     objMail.Configuration.fields.update
     On error resume next
     objMail.Send

     SET objMail=nothing
     SET objConf=nothing

     ' LITEN FELHANTERING '
     IF Err.Number <> 0 THEN
        strGoToPage = strFormPage&"?sendmail=failed&error=unknown"
     ELSE
        strGoToPage = strFormPage&"?sendmail=completed"
     END IF

  END IF
END IF

' SKICKAR ANVÄNDAREN VIDARE '
' beroende av vad som hänt ovan '
Response.Redirect(strGoToPage)
%>

Se bif. fil för kod som används för att skicka mailet.

sendmail.txt

Länk till kommentar
Dela på andra webbplatser

Man gör kontroll på varje obligatorisk input om det är tomt eller ej, om allt är uppfyllt kan du göra Request("sendmail")="completed".

 

Som komplement kan man göra kontroll med hjälp av javascript också, vilket är snyggast, för då kan man meddela användaren direkt vilket fält som är fel.

Länk till kommentar
Dela på andra webbplatser

Jag har försökt alla möjliga varianter jag kan komma på, det jag sitter med nu är detta:

 

FOR Each item IN Request.Form
 ' Strunta i vissa standardformulärvärden
 IF lCase(item)<>"submit" AND lCase(item)<>"action" THEN
  ' Kolla om obligatoriska fält är ifyllda
  'Response.Write item &" = "& Request.Form(item) &" ("&inStr(lCase(strRequiredFields),lCase(item))>0&")"


  IF inStr(lCase(strRequiredFields),lCase("Kostnadsställeansvarig"))=>0 AND Trim(Request.Form("item"))="" THEN 
   allFieldsOk = False
   haveMissingFields = True
   strMissing = strMissing & item & ","


  ELSEIF inStr(lCase(strRequiredFields),lCase("Lastbil"))=FALSE THEN
   allFieldsOk = False
   haveMissingFields = True
   strMissing = strMissing & item & ","


  END IF

' Skapa en sträng med alla formulärfält och deras värden
  IF trim(request.form("Kostnadsställeansvarig"))<>"" AND inStr(lCase(strRequiredFields),lCase("Lastbil"))<>FALSE THEN
   strFormFields = strFormFields & uCase(item) & ": " & Trim(Request.Form(item)) & vbCrLf
  END IF
 END IF
Next
IF haveMissingFields THEN
 strMissing = "&missing="&strMissing
 strMailError = strMailError & "missingFields,"
END IF
IF Right(strMissing,1)="," THEN strMissing=Left(strMissing, (len(strMissing)-1)) END IF

 

 

Men jag får inte till det iaf. Om jag har:

 

IF inStr(lCase(strRequiredFields),lCase("Kostnadsställeansvarig"))=>0 AND Trim(Request.Form("item"))="" THEN

allFieldsOk = False

haveMissingFields = True

strMissing = strMissing & item & ","

 

ELSEIF inStr(lCase(strRequiredFields),lCase("Lastbil"))=FALSE THEN

allFieldsOk = False

haveMissingFields = True

strMissing = strMissing & item & ","

END IF

 

Så får jag upp felmeddelande på både test och checkbox. Men jag blir ändå tvungen att fylla i ett fält som inte har krav på sig för att kunna skicka iväg beställningen, sen "behöver" inte checkboxen vara ibockad utan mailet skickas iaf och felkoden för krav på checkbox försvinner inte om endast den är ibockad.

 

Om jag däremot tar bort denna sträng på första raden: AND Trim(Request.Form("item"))=""

Så försvinner felkoden när checkboxen är ibockad, emn inget mail kan skickas iväg....

 

 

Man gör kontroll på varje obligatorisk input om det är tomt eller ej, om allt är uppfyllt kan du göra Request("sendmail")="completed".

 

Som komplement kan man göra kontroll med hjälp av javascript också, vilket är snyggast, för då kan man meddela användaren direkt vilket fält som är fel.

Länk till kommentar
Dela på andra webbplatser

kontrollera if satsen:

inStr(lCase(strRequiredFields),lCase("Kostnadsställeansvarig"))=>0 

är fältet med i strRequiredFields? Stämmer ist det som det som blir output?

 

Trim(Request.Form("item"))="" 

Fältet "item" (för övrigt dåligt namn på ett fält, eller ska det rentutan vara item utan citattecken?

 

ELSEIF inStr(lCase(strRequiredFields),lCase("Lastbil"))=FALSE THEN

Här kollar du bara om "lastbil" finns med i obligatoriska fält-strängen.

Länk till kommentar
Dela på andra webbplatser

Jag har försökt allt snart känns det som :)

 

Om jag använder denna kod med endast ett textfält som obligatorisk info så fungerar det strålande, jag kan ha hur många textfält jag vill med krav med endast denna lilla kod:

IF inStr(lCase(strRequiredFields),lCase(item))>0 AND Trim(Request.Form(item))="" THEN
   allFieldsOk = False
   haveMissingFields = True
   strMissing = strMissing & item & "," 
  END IF

Men så fort jag försöker labba lite med krav på en checkbox så fungerar det inte?

I själva ASP formuläret så lägger jag ju till denna kod:

IF inStr(strMissing,"Kostnadsställeansvarig")>0 THEN Response.Write("<li>Fritext på vad jag vill meddela</li>")

Sen skickas det för kontroll och behandling till mitt sendmail-script som jag skrev först.

 

Detta fungerar som sagt utan några konstigheter.

 

kontrollera if satsen:

inStr(lCase(strRequiredFields),lCase("Kostnadsställeansvarig"))=>0 

är fältet med i strRequiredFields? Stämmer ist det som det som blir output?

 

Trim(Request.Form("item"))="" 

Fältet "item" (för övrigt dåligt namn på ett fält, eller ska det rentutan vara item utan citattecken?

 

ELSEIF inStr(lCase(strRequiredFields),lCase("Lastbil"))=FALSE THEN

Här kollar du bara om "lastbil" finns med i obligatoriska fält-strängen.

Länk till kommentar
Dela på andra webbplatser

Hela koden ser ut såhär gällande IF i scriptet som tar emot ASP informationen:

' Obligatoriska formulärfält (namnen avgränsas med kommatecken)
strRequiredFields = "Kostnadsställeansvarig,Lastbil"

'--------------------------------------------------------------------

IF Request.Form("action")<>"doSend" THEN
' BESÖKAREN KOM EJ FRÅN FORMULÄRET PÅ RÄTT SÄTT
' Skickar tillbaks till formulärsidan
strGoToPage = strFormPage&"?sendmail=failed"
ELSE
' KOLLAR ATT ALLA FÄLT ÄR KORREKT IFYLLDA
allFieldsOk = True
haveMissingFields = False
FOR Each item IN Request.Form
 ' Strunta i vissa standardformulärvärden
 IF lCase(item)<>"submit" AND lCase(item)<>"action" THEN
  ' Kolla om obligatoriska fält är ifyllda
  'Response.Write item &" = "& Request.Form(item) &" ("&inStr(lCase(strRequiredFields),lCase(item))>0&")"

  IF inStr(lCase(strRequiredFields),lCase(item))>0 AND Trim(Request.Form(item))="" THEN
   allFieldsOk = False
   haveMissingFields = True
   strMissing = strMissing & item & "," 
  END IF

  'IF inStr((strRequiredFields),("Lastbil"))=FALSE THEN
   'allFieldsOk = False
   'haveMissingFields = True
   'strMissing = strMissing & item & "," 
  'ELSE
  'allFieldsOk = True
   'haveMissingFields = False 
  'END IF


  'END IF
  'AND Trim(Request.Form(item))=""





  ' Skapa en sträng med alla formulärfält och deras värden
  IF trim(request.form(item))<>"" AND inStr((strRequiredFields),("Lastbil"))<>FALSE THEN
   strFormFields = strFormFields & uCase(item) & uCase("Lastbil") & ": " & Trim(Request.Form(item)) & vbCrLf
  END IF
 END IF
Next
IF haveMissingFields = True THEN
 strMissing = "&missing="&strMissing
 strMailError = strMailError & "missingFields,"
END IF
IF Right(strMissing,1)="," THEN strMissing=Left(strMissing, (len(strMissing)-1)) END IF

' Här skulle man kunna kolla att det är en korrekt formaterad e-postadress
IF 1=0 THEN
 allFieldsOk = False
 strMailError = strMailError & "faultyEmail,"
END IF

IF NOT allFieldsOk THEN
 ' FEL PÅ NÅGOT INMATAT 
 ' Skicka tillbaks till formulärsidan med felmeddelande
 strMailError = "&error="&strMailError
 IF Right(strMailError,1)="," THEN strMailError=Left(strMailError, (len(strMailError)-1)) END IF
 strGoToPage = strFormPage&"?sendmail=failed"&strMailError&strMissing
ELSE
 ' SKAPA MAILETS INNEHÅLL
 strMailBody = ""&_

 

Jag har försökt allt snart känns det som :)

 

Om jag använder denna kod med endast ett textfält som obligatorisk info så fungerar det strålande, jag kan ha hur många textfält jag vill med krav med endast denna lilla kod:

IF inStr(lCase(strRequiredFields),lCase(item))>0 AND Trim(Request.Form(item))="" THEN
   allFieldsOk = False
   haveMissingFields = True
   strMissing = strMissing & item & "," 
  END IF

Men så fort jag försöker labba lite med krav på en checkbox så fungerar det inte?

I själva ASP formuläret så lägger jag ju till denna kod:

IF inStr(strMissing,"Kostnadsställeansvarig")>0 THEN Response.Write("<li>Fritext på vad jag vill meddela</li>")

Sen skickas det för kontroll och behandling till mitt sendmail-script som jag skrev först.

 

Detta fungerar som sagt utan några konstigheter.

 

 

Länk till kommentar
Dela på andra webbplatser

Det enklaste är att du låter alla checkboxar ha samma namn...

(det är ju även det mest logiska)

 

 

 

Ett annat förslag:

Ändra namn på checkbox-fälten till

Process_Lastbil

Process_Buss

Process_Alla

 

Lägg sedan till en kontroll i loopen FOR Each item IN Request.Form (sendmail.asp)

If Left(lCase(item),8)="process_" AND Trim(Request.Form(item))<>"" Then

 

Så att hela koden blir typ:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
'----------------------| INSTÄLLNINGAR |-----------------------------

' Anpassa dessa att motsvara din mailleverantör
myMailServer = "mail.mindoman.nu"
myUsername = "anvandarnamn"
myPassword = "losenord"
intServerPort = 25

' Namn på filen med formuläret '
strFormPage = "mailform.asp"

' Standardavsändare av mailet '
strMailSender = "Ditt Namn <annan.adress@dindomän.nu>"

' Standardärende för mailet '
strMailSubject = "Mail från kontaktformuläret"

' E-Postadress till mottagaren av formuläret '
strMailRecipient = "din.adress@dindomän.nu"

' Obligatoriska formulärfält (namnen avgränsas med kommatecken) '
strRequiredFields = "Kostnadsställeansvarig,Beställare,SSSID"

'-------------------------------------------------------------------- '

IF Request.Form("action")<>"doSend" THEN
  ' BESÖKAREN KOM EJ FRÅN FORMULÄRET PÅ RÄTT SÄTT '
  ' Skickar tillbaks till formulärsidan '
  strGoToPage = strFormPage&"?sendmail=failed"
ELSE
  ' KOLLAR ATT ALLA FÄLT ÄR KORREKT IFYLLDA '
  allFieldsOk = True
  gotOneProcessOrMore = False
  strMissing = ""
  FOR Each item IN Request.Form
     ' Strunta i vissa standardformulärvärden '
     IF lCase(item)<>"submit" AND lCase(item)<>"action" THEN
		' Kolla om obligatoriska fält är ifyllda '
		IF inStr(lCase(strRequiredFields),lCase(item))>0 AND Trim(Request.Form(item))="" THEN
           strMissing = strMissing & item & ","
		END IF

		' Kolla så att minst ett Process-fält är ifyllt '
		If Left(lCase(item),8)="process_" Then
           Response.Write "<p>["&item&" = "&Trim(Request.Form(item))&"]</p>"
		End If

		If Left(lCase(item),8)="process_" AND Trim(Request.Form(item))<>"" Then
           gotOneProcessOrMore = True
		End If

		' Skapa en sträng med alla formulärfält och deras värden '
		IF trim(request.form(item))<>"" THEN
           strFormFields = strFormFields & uCase(item) & ": " & Trim(Request.Form(item)) & vbCrLf
		END IF
     END IF
  Next

  If NOT gotOneProcessOrMore Then
     strMissing = strMissing & "Process" & ","
  End If    

  IF strMissing<>"" THEN
     allFieldsOk = False
     strMissing = "&missing="&strMissing
     strMailError = strMailError & "missingFields,"
  END IF
  IF Right(strMissing,1)="," THEN strMissing=Left(strMissing, (len(strMissing)-1)) END IF

  ' Här skulle man kunna kolla att det är en korrekt formaterad e-postadress '
  IF 1=0 THEN
     allFieldsOk = False
     strMailError = strMailError & "faultyEmail,"
  END IF



  IF NOT allFieldsOk THEN
     ' FEL PÅ NÅGOT INMATAT '
     ' Skicka tillbaks till formulärsidan med felmeddelande '
     strMailError = "&error="&strMailError
     IF Right(strMailError,1)="," THEN strMailError=Left(strMailError, (len(strMailError)-1)) END IF
     strGoToPage = strFormPage&"?sendmail=failed"&strMailError&strMissing
  ELSE
     ' SKAPA MAILETS INNEHÅLL '
     strMailBody = ""&_
		"ANGIVNA FÄLT"&vbCrLf&_
		"=========================================="&vbCrLf&_
		strFormFields&_
		"=========================================="&vbCrLf

     ' SKAPAR HTML-FORMATERAT INNEHÅLL '
     strHTMLbody=Replace(strMailBody, vbCrLf, "<br>")
     strHTMLbody=Replace(strHTMLbody, " ", " ")   

     ' SKAPAR MAILET MED INSTÄLLNINGAR OCH SKICKAR DET '
     cdoAnonymous = 0
     cdoBasic = 1
     cdoNTLM = 2 
     cdoSendUsingPickup = 1
     cdoSendUsingPort = 2
 	strCDOSchema = "http://schemas.microsoft.com/cdo/configuration/"
     SET objMail = server.CreateObject("CDO.message")
     SET objConf = server.CreateObject("CDO.configuration")
     objMail.TextBody = strMailBody
     objMail.HTMLBody = strHTMLbody
     objMail.From = strMailSender
     objMail.Sender = strMailSender
     objMail.Subject = strMailSubject
     objMail.To = strMailRecipient
     objConf.Fields.item(strCDOSchema&"sendusing") = cdoSendUsingPort
     objConf.Fields.Item(strCDOSchema&"smtpserver") = myMailServer
     objConf.Fields.Item(strCDOSchema&"smtpserverport") = intServerPort
     objConf.Fields.Item(strCDOSchema&"smtpauthenticate") = cdoBasic
     objConf.Fields.Item(strCDOSchema&"sendusername") = myUsername
     objConf.Fields.Item(strCDOSchema&"sendpassword") = myPassword
     objMail.Configuration = objConf
     objMail.Configuration.fields.update
     On error resume next
     objMail.Send

     SET objMail=nothing
     SET objConf=nothing

     ' LITEN FELHANTERING '
     IF Err.Number <> 0 THEN
		strGoToPage = strFormPage&"?sendmail=failed&error=unknown"
     ELSE
		strGoToPage = strFormPage&"?sendmail=completed"
     END IF

  END IF
END IF

' SKICKAR ANVÄNDAREN VIDARE '
' beroende av vad som hänt ovan '
Response.Redirect(strGoToPage)
%>

Länk till kommentar
Dela på andra webbplatser

Hej,

 

Tack för all hjälp, men jag har äntligen lyckats hitta lösningen som t.o.m. fungerar bättre än vad jag kunde förvänta mig :D

 

Jag hittaden sida som förklarar hur Javascript fungerar, och efter lite pill i koden så har jag en kanonlösning!!!

 

Men bara för att ni tagit er tid så ska jag prova även denna lösning och se om den fungerar!

 

Här kommer koden för den som söker denna funktion, den läggs in i själva formulärssidan inom "FORM".

Viktigt är att man under "FORM" lägger till detta: Name="best" och onsubmit='return validateMyForm()'.

 

Sen är det bara som sagt att klistra in denna kod någonstans mellan <form></form>

 

<script type="text/javascript">  
  function validateMyForm()  
  {  
       // Create validation tracking variables  
       var valid = true;  
       var validationMessage = 'Du måste fylla i följande:\r\n';  

       // Validate Kst ansvarig  
       if (document.best('Kostnadsställeansvarig').value.length == 0)  
       {  
        validationMessage = validationMessage + '  - Namn på kostnadsställeansvarig\r\n';  
        valid = false;  
       }

       if (document.best('kostnadsställe').value.length == 0)  
       {  
        validationMessage = validationMessage + '  - Kostnadsställe\r\n';  
        valid = false;  
       }  

     if (document.best('beställare').value.length == 0) 
       {  
        validationMessage = validationMessage + '  - Namn på beställare\r\n'; 
        valid = false;
       }  

     if (document.best('sssid').value.length == 0)  
       {  
        validationMessage = validationMessage + '  - SSSID på beställare\r\n';  
        valid = false;  
       }  

     if (document.best('avdelning').value.length == 0)  
       {  
        validationMessage = validationMessage + '  - Avdelning som beställare tillhör\r\n';  
        valid = false;  
       }  

     if (document.best('byggnad').value.length == 0)  
       {  
        validationMessage = validationMessage + '  - byggnad beställaren arbetar i\r\n';  
        valid = false;  
       }  

     if (document.best('sammasom').value.length == 0)  
       {  
        validationMessage = validationMessage + '  - ID som det ska beställas samma-som\r\n';  
        valid = false;  
       }  

       // Validate checkboxes  
       if (document.best('ma').checked == false &&  
        document.best('maalp').checked == false &&  
        document.best('magpp').checked == false &&  
        document.best('mcc').checked == false &&  
        document.best('mcl').checked == false &&  
        document.best('mm').checked == false &&  
        document.best('mmc').checked == false   
        )  
       {  
        validationMessage = validationMessage + '  - Minst ett alternativ måste bockas i\r\n';  
        valid = false;  
       }  


       // Display alert box with errors if any errors found  
       if (valid == false)  
       {  
        alert(validationMessage);  
       }  

       return valid;  
   }  </script>

 

Hm.... ni måste ta bort allt som heter: </script>

Det kom med automatiskt när jag klistrade in koden....

Länk till kommentar
Dela på andra webbplatser

Bra thumbsup.gif

 

 

Javascript (och nu ofta genom ramverk så som jQuery) är det som gäller på klientsidan och ger besökaren/användaren snabb och enkel återkoppling vid själva ifyllandet.

 

Men eftersom inte alla har javascript aktiverat (i sin webbläsare) så anser jag att man ska se till att göra en serversideskontroll av all info som kommer från användare/formulär.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...