Avatar billede peterpeter Seniormester
28. august 2008 - 00:04 Der er 14 kommentarer og
2 løsninger

Kontrol af indtastet data ved formular - HJÆLP

Kære alle
Nu håber jeg, at jeg kan forklare mig godt nok...ellers må I endelig sige til ;-)
Jeg kan desværre kun en meget lille smule ASP, så jeg behøver jeres hjælp til dette - som jeg tror, ikke er så svært ;-)

På hjemmesiden www.vaugrenier.dk har vi en side, hvor på der er en formular.
Her er det muligt at udfylde formularen, som så sendes til administratoren.

I denne formular skal man udfylde navn og adresse med mere - men vi oplever en gang imellem, at folk glemmer at udfylde alle felterne !!

Jeg vil gerne have en pop-up warning, der advarer om, hvis man ikke har udfyldt alle felterne.
Det behøves ikke at være specificeret hvilke felter der ikke er udfyldt, blot en advarsel ala: "Alle stjernemarkerede fleter skal udfyldes".

Er der nogen der vil hjælpe med at indsætte lidt kode, således at man ikke kan fremsende formularen, uden at alle felter er udfyldt ???

Jeg går ud fra, at det er nedenstående fil der skal rettes ;-)

På forhånd tusind tak for hjælpen.

PS: Man kommer til formularsiden ved at følge denne sti: vaugrenier.dk -> Leje Lejlighed -> skriv fra Uge 1 til Uge 40 -> Tryk SEND -> Sæt et tilfældigt kryds og tryk BOOK -> Her er formularen....

Endnu engang tak - Jeg håber virkelig der er nogle eksperter der kan og vil hjælpe....

Med Venlig Hilsen
Peter

bookApartmentNow-dk.asp

                                                                   
                                                                   
                                                                   
                                           
<%@ LANGUAGE=VBSCRIPT%>
<!--#include file="../lib/connection.asp"-->
<!--#include file="../lib/odbc.asp"-->
<%
Response.Expires = 0
Response.ExpiresAbsolute = Date() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>
<html>
<head>
<title>Book lejlighed</title>
<link href="../style.css" rel="STYLESHEET" TYPE="text/css">
</head>
<body topmargin="20" leftmargin="20" marginheight="20" marginwidth="20">
<h1>Ønsket reservering</h1>

<form action="sendMail.asp">
<%
lejlighedsnummer = Request.Querystring("lejlighedsnummer")
lejlighedstype = Request.Querystring("type")
first = true
str = split(Request.QueryString,"&")

For i = 0 To uBound(str)-5
    newStr = split(str(i),"aId")
    newStr2 = split(newStr(1),"=")
    If oldId <> newStr2(0) And first = false Then
        Response.Write "Det er kun muligt at bestille den samme lejlighed flere uger i træk... <a href=""java script:history.back()"">prøv igen!</a></body></html>"
        Response.End
    End If
    newWeek = split(str(i),"wNo")
    newWeek2 = split(newWeek(1),"_")
    'Response.Write newWeek2(0) & "<br>"
    oldId = newStr2(0)
    If first = true Then
        uger = uger & newWeek2(0)
    Else
        uger = uger & ", " & newWeek2(0)
    End If
    'dato til og fra
    Response.Write "<input type=""hidden"" name=""weekNo"" value="""&newWeek2(0)&""">" & vbCrlf
    first = false
Next
Response.write "Uge(r): " & uger & "<br>"

strUger = split(uger,", ")
wPrice = 0
dage = 0
For i = 0 To uBound(strUger)
    dage = dage + 7
    wPrice = wPrice + Request.Querystring("pris")
Next

Fundet = False
For i = 0 To uBound(strUger)
    If i = 0 Then
        wNo = wNo & "(wNo=" & strUger(i) & " AND Year = " & Request.QueryString("startYear") & ")"
    Else
        If strUger(i) < oldWeekNo Or fundet = True Then
            wNo = wNo & " OR (wNo=" & strUger(i) & " AND Year = " & Request.QueryString("endYear") & ")"
            fundet = True
        Else
            wNo = wNo & " OR (wNo=" & strUger(i) & " AND Year = " & Request.QueryString("startYear") & ")"
        End If
    End If
    oldWeekNo = strUger(i)
Next
'Response.write "<br>select * from queryBook where name='" & lejlighedsnummer & "' AND wNo=" & wNo&"<br>"
If Request.QueryString("startYear") <> Request.QueryString("endYear") Then
    strsql = "select * from queryBook where id =" &  newStr2(0) & " AND (" & wNo & ")" ' AND (year = " & Request.QueryString("startYear") & " OR year = " & Request.QueryString("endYear") & ")"
Else
    strsql = "select * from queryBook where id =" &  newStr2(0) & " AND (" & wNo & ") AND year = " & Request.QueryString("startYear")
End If
   
            Set objConn = Server.CreateObject("ADODB.Connection")
            With objConn
                .Open ConnectionString
                Set objRES = .Execute(strsql)
            End with
Do until objRES.EOF
    'Response.Write objRES("wPrice") & "<br>"
    prisuge = prisuge + objRES("wPrice")
    ' Nedenstående er rettet!
    appName = objRES("name")
    objRES.Movenext
Loop
'*********************
'Get the selected week
strSelectedWeek = strUger(0)-1 'myForm("uge")
strSelectedWeek = strSelectedWeek-1
'Get the selected year
strSelectedYear = Request.QueryString("startYear")'myForm("aar")
'Get the first date of selected year.
If strSelectedYear = "2001" Then
    datfirstDateOfWeek = DateAdd("ww",strSelectedWeek,"6/1/"&strSelectedYear)
ElseIf strSelectedYear = "2002" Then
    If strSelectedWeek = -1 Then
        datfirstDateOfWeek = DateAdd("ww",strSelectedWeek,"4/1/"&strSelectedYear+1)
    Else
        datfirstDateOfWeek = DateAdd("ww",strSelectedWeek,"5/1/"&strSelectedYear)
    End If
ElseIf strSelectedYear = "2003" Then
    datfirstDateOfWeek = DateAdd("ww",strSelectedWeek,"4/1/"&strSelectedYear)
ElseIf strSelectedYear = "2004" Then
    datfirstDateOfWeek = DateAdd("ww",strSelectedWeek,"3/1/"&strSelectedYear)
ElseIf strSelectedYear = "2005" Then
    datfirstDateOfWeek = DateAdd("ww",strSelectedWeek,"8/1/"&strSelectedYear)
ElseIf strSelectedYear = "2006" Then
    datfirstDateOfWeek = DateAdd("ww",strSelectedWeek,"7/1/"&strSelectedYear)
ElseIf strSelectedYear = "2007" Then
    datfirstDateOfWeek = DateAdd("ww",strSelectedWeek,"6/1/"&strSelectedYear)
ElseIf strSelectedYear = "2008" Then
    datfirstDateOfWeek = DateAdd("ww",strSelectedWeek,"5/1/"&strSelectedYear)
ElseIf strSelectedYear = "2009" Then
    datfirstDateOfWeek = DateAdd("ww",strSelectedWeek,"3/1/"&strSelectedYear)
End If
Response.write "Dato fra: " & datfirstDateOfweek & "&nbsp;&nbsp;&nbsp;Kl: 17.00<br><input type='hidden' name='Datofra' value='"& datfirstDateOfweek &"'>"
datForLeave = DateAdd("d",dage,datfirstDateOfweek)
Response.write "Dato til&nbsp;: " & datForLeave  & "&nbsp;&nbsp;&nbsp;&nbsp;Kl: 10.00<br><input type='hidden' name='Datotil' value='"& datForLeave &"'>"
Response.write "Lejlighedstype: " & lejlighedstype & "<br><input type='hidden' name='lejlighedstype' value='"& lejlighedstype &"'>"
' Nedenstående er rettet!
Response.write "Lejlighedsnummer: "& appName &"<br><input type='hidden' name='lejlighedsnummer' value='"& appName &"'>"
Response.write "<br>Pris: "& prisuge & ",-<br><input type='hidden' name='wPrice' value='"& prisuge &"'><br>"
If first <> True Then %>
<table border="0" cellspacing="0" cellpadding="0">
    <tr><td>Navn:<font color="#FF0000" size="2">*</font></td><td><input type="text" name="strNavn" size="50"></td></tr>
    <tr><td>Adresse:<font color="#FF0000" size="2">*</font>&nbsp;&nbsp;</td><td><input type="text" name="strAdresse" size="50"></td></tr>
    <tr><td>Postnr:<font color="#FF0000" size="2">*</font>&nbsp;&nbsp;</td><td><input type="text" name="strPostnr" size="50"></td></tr>
    <tr><td>By:<font color="#FF0000" size="2">*</font>&nbsp;&nbsp;</td><td><input type="text" name="strBy" size="50"></td></tr>
    <tr><td>Land:<font color="#FF0000" size="2">*</font></td><td><input type="text" name="strLand" size="50"></td></tr>
    <tr><td>Telefon:<font color="#FF0000" size="2">*</font></td><td><input type="text" name="strTelefon" size="50"></td></tr>
    <tr><td>E-mail:<font color="#FF0000" size="2">*</font></td><td><input type="text" name="strEmail" size="50"></td></tr>
    <tr><td valign="top">Bemærkninger:&nbsp;&nbsp;</td><td><textarea cols="49" rows="10" name="strText"></textarea></td></tr>
    <tr><td colspan="2"><br><br>Felter markeret med <font color="#FF0000" size="2">*</font> SKAL udfyldes.</td></tr>
    <tr><td colspan="2"><br><br>Bekræftelse ønskes pr:</td></tr>
    <tr><td><br>Alm. post &nbsp;&nbsp;<input type="radio" name="strTyp" value="Post" checked style="border:none"></td></tr>
    <tr><td>E-mail &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="strTyp" value="Email" checked style="border:none"></td></tr>
   
    <tr><td></td><td align="right"><input type="submit" value="Reserver"></td></tr>
</table><br><a href="java script://" onClick="window.print()">Udskriv denne side</a>
<%
Else
    Response.Write "Du har ikke valgt en eller flere uger, <a href=""java script:history.back()"">prøv igen!</a>"
End If
%>

<br><br><br>
<br>

</form>

<br>
</body>
</html>
Avatar billede softspot Forsker
28. august 2008 - 07:54 #1
Indsæt denne stump kode i <head>-sektionen af din side:

<script type="text/javascript">
function tjekFormular(frm) {
  var kraevede = ["strNavn","strAdresse","strPostnr","strBy","strLand","strTelefon","strEmail"];

  for(var i=0; i<kraevede.length; i++) {
    if(frm.elements[kraevede[i]].value == "") {
      alert("Alle felter markeret med stjerne skal udfyldes.");
      return false;
    }
  }

  return true;
}
</script>

Udskift derefter

<form action="sendMail.asp">


med denne:

<form action="sendMail.asp" onsubmit="return tjekFormular(this);">
Avatar billede softspot Forsker
28. august 2008 - 07:58 #2
Forklaring:

  var kraevede = ["strNavn","strAdresse","strPostnr","strBy","strLand","strTelefon","strEmail"];

angiver de felter i formularen der skal kontrolleres for indhold (eller mangel på sammen). Dvs. hvis du skal have tjek på flere eller færere, så er det her ud skal rette. HUSK at navnene er case sensitive, så store og små bogstaver har en betydning for om navnet matches eller ej!

onsubmit-eventet forhindrer formularen i at blive sendt, hvis eventets kode returnerer false og det benytter vi os af i dette tilfælde, idet funktionen returnerer false, hvis der er mindst ét felt som er tomt. Hvis alle felter har noget indhold, så tillades submit og formularen sendes...
Avatar billede mitbrugernavn Praktikant
28. august 2008 - 08:14 #3
sæt dette ind lige efter </head>

<script type="text/javascript">

function Form2_Validator(TheForm2)
{
  if(document.TheForm2.strNavn.value==''){
    alert('Angiv venligst navn!');
    document.TheForm2.strNavn.focus();
    return false;
  }
if(document.TheForm2.strAdresse.value==''){
    alert('Angiv venligst adresse!');
    document.TheForm2.strAdresse.focus();
    return false;
  }
  if(document.TheForm2.strPostnr.value==''){
    alert('Angiv venligst postnr.!');
    document.TheForm2.strPostnr.focus();
    return false;
  }
  if(document.TheForm2.strBue.value==''){
    alert('Angiv venligst by!');
    document.TheForm2.strBue.focus();
    return false;
  }
  if(document.TheForm2.strLand.value==''){
    alert('Angiv venligst land!');
    document.TheForm2.strLand.focus();
    return false;
  }
  if(document.TheForm2.strTelefon.value==''){
    alert('Angiv venligst telefon nr.!');
    document.TheForm2.strTelefon.focus();
    return false;
  }
if(document.TheForm2.strEmail.value==''&&!document.TheForm2.email.value.match(/^[\w\.\-_]+@[\w\-_]+\.[\w\.\-_]+$/))    {       
    alert('Der skal stå en gyldig e-mail adresse i tekst feltet!');
    document.TheForm2.strEmail.focus();
    return false;
  }

  return true;
}

</script>


og ret så denne linie
<form action="sendMail.asp">

til

<form name="TheForm2" method="post" action="">

og ret denne

<input type="submit" value="Reserver">

til

<input type="submit" name="bestil" value="Reserver" onClick="this.form.action='sendMail.asp';return Form2_Validator(this);this.form.submit();"></td>
Avatar billede peterpeter Seniormester
28. august 2008 - 08:36 #4
Godmorgen SoftSport og Mitbrugernavn ;-)

Tusind Tusind Tak - fordi I begge har gidet ulejlige jer med at hjælpe mig - det er jeg meget taknemmelig for, tak.

Spørgsmål:
Der er to besvarelser !! på det samme spørgsmål, ikke ??

Hvilken løsning skal jeg vælge ?? Er der fordele/ulemper - eller.....

Endnu engang TAK FOR HJÆLPEN ;-)

MVH Peter
Avatar billede mitbrugernavn Praktikant
28. august 2008 - 08:42 #5
det er lige gode - softspot er kort og enkelt - min lidt længere men den kan du så selv sætte retursvaret i forhold til fejlen fra brugeren - men prøv dig frem ;-)))
Avatar billede softspot Forsker
28. august 2008 - 08:48 #6
Min kan da også komme til at vise feltspecifikke fejltekster ;-)

<script type="text/javascript">
function tjekFormular(frm) {
  var kraevede = ["strNavn","strAdresse","strPostnr","strBy","strLand","strTelefon","strEmail"];
  var fejlteskst = ["navn","adresse","postnr","by","land","telefonnr","e-mail"];

  for(var i=0; i<kraevede.length; i++) {
    if(frm.elements[kraevede[i]].value == "") {
      alert("Angiv venligst " + fejltekst);
      frm.elements[kraevede[i]].focus();
      return false;
    }
  }

  return true;
}
</script>

Vælg den du synes, eller del point mellem begge besvarelse - det er helt op til dig :-)
Avatar billede softspot Forsker
28. august 2008 - 08:49 #7
Ups! Der var jeg lige for hurtig... brug denne i stedet:

<script type="text/javascript">
function tjekFormular(frm) {
  var kraevede = ["strNavn","strAdresse","strPostnr","strBy","strLand","strTelefon","strEmail"];
  var fejlteskst = ["navn","adresse","postnr","by","land","telefonnr","e-mail"];

  for(var i=0; i<kraevede.length; i++) {
    if(frm.elements[kraevede[i]].value == "") {
      alert("Angiv venligst " + fejltekst[i]);
      frm.elements[kraevede[i]].focus();
      return false;
    }
  }

  return true;
}
</script>
Avatar billede softspot Forsker
28. august 2008 - 08:54 #8
Eller måske mere intuitivt:

<script type="text/javascript">
function tjekFormular(frm) {
  var kraevede = [
    {felt:"strNavn",tekst:"navn"},
    {felt:"strAdresse",tekst:"adresse"},
    {felt:"strPostnr",tekst:"postnr"},
    {felt:"strBy",tekst:"by"},
    {felt:"strLand",tekst:"land"},
    {felt:"strTelefon",tekst:"telefonnr."},
    {felt:"strEmail",tekst:"e-mail"}
  ];

  for(var i=0; i<kraevede.length; i++) {
    if(frm.elements[kraevede[i].felt].value == "") {
      alert("Angiv venligst " + kraevede[i].tekst);
      frm.elements[kraevede[i].felt].focus();
      return false;
    }
  }

  return true;
}
</script>

Med denne version er det rimelig let at udbygge fejlmeddelelserne til at være meget mere specifikke end de er nu, da du bare skal ændret alerten til kun at vise krevede[i].tekst i stedet for "Angiv venligst " + kreavede[i].tekst - og så skal teksterne naturligvis udvides til at kunne stå alene... :-)
Avatar billede mitbrugernavn Praktikant
28. august 2008 - 08:59 #9
;-)))  ja ja - men min validerer for korrekt indtastet email adresse - hvad med din -> softspot
Avatar billede softspot Forsker
28. august 2008 - 09:10 #10
Det kan den da komme til (bemærk at der nu kan angives særskilt tekst for hver validering) ;-)

<script type="text/javascript">
function tjekFormular(frm) {
  var kraevede = [
    {felt:"strNavn",tekst:"Angiv venligst navn"},
    {felt:"strAdresse",tekst:"Angiv venligst adresse"},
    {felt:"strPostnr",tekst:"Angiv venligst postnr"},
    {felt:"strBy",tekst:"Angiv venligst by"},
    {felt:"strLand",tekst:"Angiv venligst land"},
    {felt:"strTelefon",tekst:"Angiv venligst telefonnr."},
    {felt:"strEmail",tekst:"Angiv venligst e-mail"},
    {
      felt:"strEmail",
      tekst:"Der skal angives en gyldig e-mail",
      validering:function(obj){
        return !obj.value.match(/^[\w\.\-_]+@[\w\-_]+\.[\w\.\-_]+$/);
      }
    }
  ];

  for(var i=0; i<kraevede.length; i++) {
    var fld = kraevede[i];
    // hvis der ikke er angivet nogen specifik validering,
    // så valideres der bare for indhold, ellers kaldes den
    // specifikke valideringsfunktion med feltet selv.
    if((!fld.validering && frm.elements[fld.felt].value == "") || (fld.validering && fld.validering(frm.elements[fld.felt])) {
      alert(fld.tekst);
      frm.elements[fld.felt].focus();
      return false;
    }
  }

  return true;
}
</script>
Avatar billede softspot Forsker
28. august 2008 - 11:57 #11
Avatar billede peterpeter Seniormester
28. august 2008 - 12:34 #12
Kære begge to
Endnu engang vil jeg gerne gøre opmærksom på min taknemmelighed for, at I gider hjælpe mig !! Tak.

Jeg er på arbejde nu og vil derfor først rette i filerne, i aften...

Jeg er IKKE ASP haj, så derfor vil jeg lede efter koden der skal fjernes - slette den og indsætte det som I har skrevet - direkte kopieret.

Jeg prøver begge to, og ser hvad der virker....

Tusind Tak - Jeg vender tilbage...

Fortsat god dag.

/Peter
Avatar billede peterpeter Seniormester
29. august 2008 - 00:14 #13
Kære begge

TUSIND TUSIND TAK for jeres hjælp...

Jeg har nu kopieret koden ind og det virker !!!

Tak

Jeg vil gerne give jer point begge to, men det er altså mitbrugernavn's løsning jeg har anvendt på sitet... På den anden ide er jeg utrolig gld for, at I beggevil hjlæpe - så jeg fordeler point 150/50 - er det OK med jer... Ellers må I lige sige til....

Endnu engang TAK ;-)

/Peter
Avatar billede mitbrugernavn Praktikant
29. august 2008 - 08:35 #14
Tak for point og god weekend.
Avatar billede softspot Forsker
29. august 2008 - 08:51 #15
Tak for point :)
Avatar billede ceetara Nybegynder
03. september 2008 - 13:04 #16
hej softspot

har brug for lidt hjælp til min side. kunne du hjælpe gerne mod betaling.

kan kontaktes på king@mail.dk
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