Avatar billede bodyguard Nybegynder
25. juli 2007 - 11:32 Der er 12 kommentarer og
1 løsning

Timeseddel - validering og Afsendelse med Jmail

Hej Eksperter,

Jeg vil godt lave en timeseddels form som har lidt funktioner.
Hvis vi nu forestiller os at der er en standard linie som så gentages x antal gange under...

Inputsne:
Dato(dd-mm-åååå), Fra kl, Til kl, Timer(auto udregnet), Kunde(Dropdown), Lokation(dropdown), Bemærkning


Funktion:
Når man vælger en kunde skal der vises de lokationer som høre til den bestemte kunde i dropdown. Der skal i scriptet kunne defineres en standard Fra- og til kl, så hvis der ikke er udfyldt noget Fra kl eller Til kl så skal de udfyldes med Standarden.

Det skal være muligt at anføre hvor mange feldter der skal vises.
Det skal være muligt at tilføje/fjerne feldter.
I bunden skal der vises det samlede time antal.
Dato feldtet skal automatisk udfyldes med dato 1-30/31 med udgangspunkt i den pågældene måned. Det skal også være muligt at gå frem og tilbage mellem månederne. Lad os sige at man nu er to steder samme dag og man retter datoen skal datoerne indordne sig nedenfor.


Validering:
Hvis time antallet i en time er indskrevet forkert skal baggrunden gøres rød i den linie. F.eks. ved ugyldige tegn.

Hvis time antallet oversiger 24 skal baggrunden gøres mørkorange.

Når der submittes skal der tjekkes om der er "røde" linier og så skal focus flyttes der til. Ellers skal der afsendes en email med inputsne.

Efterfølgende skal det hele afsendes via Jmail.
Avatar billede w13 Novice
25. juli 2007 - 15:12 #1
Har du noget af koden eller søger du en færdig løsning fra bunden?
Avatar billede w13 Novice
25. juli 2007 - 15:13 #2
Evt. en kode til formularen eller til at sende JMail?
Avatar billede bodyguard Nybegynder
25. juli 2007 - 16:16 #3
Desværre, jeg har desværre intet :|
Avatar billede w13 Novice
25. juli 2007 - 16:35 #4
Det er en temmelig omfattende opgave, og den omfatter ikke bare ASP samt JMail-funktion men også flere JavaScript-funktioner, som måske skulle være spurgt om i JavaScript-kategorien som separat spg., når ASP-delen var løst her.

To spg.:

1) Du skriver, at man skal kunne definere, hvor mange felter, der skal vises. Skal brugeren kunne gøre det, ellers skal du bare kunne gøre det i koden på en nem måde?

2) Og så skriver du, at man skal kunne fjerne/tilføje felter. Men med alle disse her javascript-valideringer og forskellig funktionalitet afhængig af de forskellige felttyper bliver det meget svært. Især fordi ASP-delen så skal være meget mere dynamisk, end hvis jeg nu ved, præcis hvilke felter, der skal være. Og hvordan skulle brugeren tilføje felter?
Avatar billede w13 Novice
25. juli 2007 - 17:01 #5
3) Skal der både indtastes timer og minutter eller bare timer?
Avatar billede w13 Novice
25. juli 2007 - 17:43 #6
Muligvis er det lidt henad:
----------------------------------------------
<script language="JavaScript" type="text/JavaScript">
<!--
function isTimeKey(evt,id){
    var charCode=(evt.which) ? evt.which : event.keyCode;
    if((charCode>31&&(charCode<48||charCode>57))||charCode==46||charCode==8){return false}

    return true
}
</script>

<%strAntalTimesedler=1
strMailAdresse="mail@mail.dk"

Response.Write "<h1>Timesedler</h1>"&vbCrLf

If Request.Querystring("send") Then
    Set msg=Server.CreateOBject("JMail.Message")
    msg.Silent=True
    msg.From=strMailAdresse
    msg.FromName="Timesedler"
    msg.Charset="iso-8859-1"
    msg.AddRecipient strMailAdresse
    msg.Subject="Timesedler"
    For Each Item in Request.Form
        msg.Body=msg.Body&Item.Name&": "&Item.Value&"<br>"&vbCrLf
    Next
    Set msg=Nothing
    Response.Write "<p>Timesedler er sendt!</p>"
End If

Response.Write "<form method=""post"" action=""?send=true"">"&vbCrLf
For i=1 To strAntalTimesedler
    Response.Write "<p><label>Dato</label><br>"&vbCrLf
    Response.Write "<input type=""text"" name=""dato"&i&""" value=""dd-mm-åååå""></p>"&vbCrLf

    Response.Write "<p><label>Fra kl.</label><br>"&vbCrLf
    Response.Write "<input type="text" name=""fratime"&i&""" value=""00"" maxlength=""2"" onkeypress=""return isTimeKey(event,"&i&")"">:"
    Response.Write "<input type="text" name=""framinut"&i&""" value=""00"" maxlength=""2"" onkeypress=""return isTimeKey(event)""></p>"&vbCrLf

    Response.Write "<p><label>Til kl.</label><br>"&vbCrLf
    Response.Write "<input type="text" name=""tiltime"&i&""" value=""00"" maxlength=""2"" onkeypress=""return isTimeKey(event,"&i&")"">:"
    Response.Write "<input type="text" name=""tilminut"&i&""" value=""00"" maxlength=""2"" onkeypress=""return isTimeKey(event)""></p>"&vbCrLf

    Response.Write "<p><label>Kunder</label><br>"&vbCrLf
    Response.Write "<select name=""kunder"&i&""">"&vbCrLf
    Response.Write "<option>Kunde1</option>"&vbCrLf
    Response.Write "<option>Kunde2</option>"&vbCrLf
    Response.Write "</select></p>"&vbCrLf

    Response.Write "<p><label>Lokation</label><br>"&vbCrLf
    Response.Write "<select name=""lokation"&i&""">"&vbCrLf
    Response.Write "<option>København</option>"&vbCrLf
    Response.Write "<option>Århus</option>"&vbCrLf
    Response.Write "<option>Odense</option>"&vbCrLf
    Response.Write "</select></p>"&vbCrLf

    Response.Write "<p><label>Bemærkning</label><br>"&vbCrLf
    Response.Write "<textarea name=""bemaerkning"&i&"""></textarea></p>"&vbCrLf

    Response.Write "<hr>"&vbCrLf
Next
Response.Write "<input type=""submit"" value=""Send timesedler"">"&vbCrLf
Response.Write "</form>"&vbCrLf%>
--------------------------------------------------------
Jeg har dog udelagt "Timer"-feltet og tester ikke, om timeantallet er gyldigt. Dog kan man kun skrive tal og maks 2 tegn i hvert felt. Se om det er noget derhenad.
Avatar billede bodyguard Nybegynder
25. juli 2007 - 18:48 #7
Vi glemmer bare 1 og 2...

3 Det skal køre på time og kvarter basis
Avatar billede w13 Novice
25. juli 2007 - 19:10 #8
Virker dette ordentligt hos dig:
---------------------------------------------------------
<html>
<head></head>
<body>
<script language="JavaScript" type="text/JavaScript">
<!--
function isTimeKey(evt,id){
    var charCode=(evt.which) ? evt.which : event.keyCode;
    if((charCode>31&&(charCode<48||charCode>57))||charCode==46||charCode==8){return false}

    return true
}
-->
</script>

<%strAntalTimesedler=1
strMailAdresse="mail@mail.dk"

Response.Write "<h1>Timesedler</h1>"&vbCrLf

If Request.Querystring("send") Then
    Set msg=Server.CreateOBject("JMail.Message")
    msg.Silent=True
    msg.From=strMailAdresse
    msg.FromName="Timesedler"
    msg.Charset="iso-8859-1"
    msg.AddRecipient strMailAdresse
    msg.Subject="Timesedler"
    For Each Item in Request.Form
        msg.Body=msg.Body&Item&": "&Request.Form(Item)&"<br>"&vbCrLf
    Next
    Set msg=Nothing
    Response.Write "<p>Timesedler er sendt!</p>"
End If

Response.Write "<form method=""post"" action=""?send=true"">"&vbCrLf
For i=1 To strAntalTimesedler
    Response.Write "<p><label>Dato</label><br>"&vbCrLf
    Response.Write "<input type=""text"" name=""dato"&i&""" value="""&day(now)&"-"&month(now)&"-"&year(now)&"""></p>"&vbCrLf

    Response.Write "<p><label>Fra kl.</label><br>"&vbCrLf
    Response.Write "<input type=""text"" name=""fratime"&i&""" value=""00"" size=""2"" maxlength=""2"" onkeypress=""return isTimeKey(event,"&i&")"">:"&vbCrLf
    Response.Write "<select type=""text"" name=""frakvarter"&i&""">"&vbCrLf
    Response.Write "<option>00</option>"&vbCrLf
    Response.Write "<option>15</option>"&vbCrLf
    Response.Write "<option>30</option>"&vbCrLf
    Response.Write "<option>45</option>"&vbCrLf
    Response.Write "</select></p>"&vbCrLf

    Response.Write "<p><label>Til kl.</label><br>"&vbCrLf
    Response.Write "<input type=""text"" name=""tiltime"&i&""" value=""00"" size=""2"" maxlength=""2"" onkeypress=""return isTimeKey(event,"&i&")"">:"&vbCrLf
    Response.Write "<select type=""text"" name=""tilkvarter"&i&""">"&vbCrLf
    Response.Write "<option>00</option>"&vbCrLf
    Response.Write "<option>15</option>"&vbCrLf
    Response.Write "<option>30</option>"&vbCrLf
    Response.Write "<option>45</option>"&vbCrLf
    Response.Write "</select></p>"&vbCrLf

    Response.Write "<p><label>Kunder</label><br>"&vbCrLf
    Response.Write "<select name=""kunder"&i&""">"&vbCrLf
    Response.Write "<option>Kunde1</option>"&vbCrLf
    Response.Write "<option>Kunde2</option>"&vbCrLf
    Response.Write "</select></p>"&vbCrLf

    Response.Write "<p><label>Lokation</label><br>"&vbCrLf
    Response.Write "<select name=""lokation"&i&""">"&vbCrLf
    Response.Write "<option>København</option>"&vbCrLf
    Response.Write "<option>Århus</option>"&vbCrLf
    Response.Write "<option>Odense</option>"&vbCrLf
    Response.Write "</select></p>"&vbCrLf

    Response.Write "<p><label>Bemærkning</label><br>"&vbCrLf
    Response.Write "<input type=""text"" name=""bemaerkning"&i&"""></p>"&vbCrLf

    Response.Write "<hr>"&vbCrLf
Next
Response.Write "<input type=""submit"" value=""Send timesedler"">"&vbCrLf
Response.Write "</form>"&vbCrLf%>
</body>
</html>
---------------------------------------------------------
Husk at rette mailen.
Avatar billede bodyguard Nybegynder
27. juli 2007 - 15:15 #9
Hmm kan du ikke selv se at det er pænt upraktisk!
Man sender jo en hel måned ind af gangen...

Jeg kommer lige med en uddybende kommentar i morgen...
Avatar billede w13 Novice
27. juli 2007 - 15:17 #10
Jeg ved vist ikke rigtig, hvad du vil så. Men går ud fra, princippet i min kode er rigtigt.
Avatar billede bodyguard Nybegynder
31. august 2009 - 21:56 #11
W13> Kom med et svar :-)
Avatar billede w13 Novice
31. august 2009 - 22:04 #12
;)
Avatar billede w13 Novice
25. september 2010 - 15:33 #13
Tak for point! :)
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