Avatar billede jtc Nybegynder
30. november 2003 - 20:05 Der er 35 kommentarer og
1 løsning

Problem med validering af form

Den følgende side validere godt nok mine to felter når jeg trykker "opret indlæg" men når jeg så trykker ok i popup meddelelsen så opretter den posten i databasen
Hvis jeg trykker ok i popup meddelelsen skal jeg jo have mulighed for at rette det indtastede, hvad skal jeg gøre???

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
if Session("login") <> "loged_in" then Response.Redirect("login.asp")
%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/login.mdb")
%>
<% 
SQL = "SELECT * FROM tblmedlemmer WHERE licensnr = " & Session("licensnr")
Set rs = Conn.Execute(SQL)
%>
<%
If Request("Submit") <> "" Then
%>
<%
Set database = Server.CreateObject ("ADODB.Connection")
database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/db/debatforum.mdb")
%>
<%
Set indlaeg = Server.CreateObject("ADODB.Recordset")
indlaeg.Open "SELECT * FROM debat", database, 2, 2

indlaeg.AddNew
    indlaeg("overskrift") = Request("overskrift")
    indlaeg("dato") = Request("dato")
    indlaeg("forfatter") = Request("forfatter")
    indlaeg("kommentar") = Request("kommentar")
    indlaeg("klub") = Request("klub")
    indlaeg("id2") = Request("id2")
indlaeg.Update

Response.Redirect("main.asp")

End If
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/JavaScript">
<!--
function valider ( form ) {
  if ( form.kommentar.value.length > 0 ) {
  } else {
      alert ("Feltet kommentar skal udfyldes.");
      form.att.focus();
      return false;
  };

  if ( form.overskrift.value.length > 0 ) {
  } else {
      alert ("Feltet overskrift skal udfyldes.");
      form.att.focus();
      return false;
  };

  return true; 
};   
</script>
</head>

<body>
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td><form action="opret.asp" method="post" name="form1" onsubmit="return valider(this);" >
        <table border="0">
          <tr>
            <td height="31" valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>OPRET
              INDL&AElig;G I DEBATTEN</strong></font></td>
          </tr>
          <tr>
            <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Overskrfit:</font></td>
          </tr>
          <tr>
            <td> <div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                <input name="overskrift" type="text" class="noborder" size="53">
                </font></div></td>
          </tr>
          <tr>
            <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Kommentar:</font></td>
          </tr>
          <tr>
            <td valign="top"> <div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                <textarea name="kommentar" cols="40" rows="8" class="noborder" id="kommentar"></textarea>
                <input name="forfatter" type="hidden" id="forfatter" value="<% Response.Write(rs("fornavn") & " " & rs("efternavn")) %>">
                <input name="klub" type="hidden" id="klub" value="<% Response.Write(rs("klub")) %>">
                <input name="dato" type="hidden" id="dato" value="<% response.write(Now())%>">
                <input name="id2" type="hidden" id="id2" value="0">
                </font></div></td>
          </tr>
          <tr>
            <td valign="top"> <div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                <input name="Submit" type="submit" class="knap" value="Opret indl&aelig;g">
                <input type="reset" name="Submit2" value="Nulstil indl&aelig;g">
                </font></div></td>
          </tr>
        </table>
        </form></td>
        </tr>
      </table>

</body>
</html>
Avatar billede nmh Nybegynder
30. november 2003 - 20:31 #1
Du skal i stedet for at benytte en submit knap benytte en sædvanlig knap, som aktiverer en funktion, som validerer din form.
Hvis det går godt afgiver søger du for at få submitted-formen.
Din valideringsfunktion kunne se således ud:
function valider () {
  if ( form1.kommentar.value.length > 0 ) {
  } else {
      alert ("Feltet kommentar skal udfyldes.");
      form1.att.focus();
      return false;
  };

  if ( form1.overskrift.value.length > 0 ) {
  } else {
      alert ("Feltet overskrift skal udfyldes.");
      form1.att.focus();
      return false;
  };

  form1.submit();
};   
Din form skal så se således ud
<form action="opret.asp" method="post" name="form1" >
Avatar billede jtc Nybegynder
30. november 2003 - 20:43 #2
det virker ikke

hvad er der galt
Avatar billede jtc Nybegynder
30. november 2003 - 20:45 #3
der må være noget galt med
form1.submit()

Hvad kan det være
Avatar billede jtc Nybegynder
30. november 2003 - 20:48 #4
men hvad skal jeg så skrive ved knappen???
<input name="Button" type="button" class="knap" value="Opret indl&aelig;g" onClick="return valider(this);">">

eller hvad kan det være
Avatar billede jtc Nybegynder
30. november 2003 - 20:49 #5
eller så skal du bare sættet det ind i koden og skrive den her så jeg bare kan kopiere det?

Det kan jo være det er mig der forstår dig forkert
Avatar billede nmh Nybegynder
30. november 2003 - 21:02 #6
Prøv med document.form1.submit()
og
<input type="button" value="Opret indl&aelig;g" onClick="valider()">
Avatar billede jtc Nybegynder
30. november 2003 - 21:05 #7
hvor skal jeg skrive det første
Avatar billede jtc Nybegynder
30. november 2003 - 21:09 #8
nu virker det næsten, men når jeg så har udfyldt begge felter opretter den ikke en post i databasen
Avatar billede nmh Nybegynder
30. november 2003 - 21:11 #9
Det første i funktionen valider()
Du skal nok alle steder, hvor der står form1.att.focus() skrive document.form1.focus(), og tilsvarende skal form1.submit()ændres til document.form1.submit.
Avatar billede jtc Nybegynder
30. november 2003 - 21:15 #10
det virker stadig ikke hvis jeg skriver dette

<script type="text/JavaScript">
function valider () {
  if ( form1.kommentar.value.length > 0 ) {
  } else {
      alert ("Feltet kommentar skal udfyldes.");
      document.form1.focus();
      return false;
  };

  if ( form1.overskrift.value.length > 0 ) {
  } else {
      alert ("Feltet overskrift skal udfyldes.");
      document.form1.focus();
      return false;
  };

  document.form1.submit();
}; 
</script>

Hvad er der galt
Avatar billede nmh Nybegynder
30. november 2003 - 21:15 #11
men så er det siden opret.asp, du skal se på.
Bliver den aktiveret?
prøv at få udskrevet de overførte værdier, med ordren

response.write request.form("kommentar")
og tilsvarende med de andre overførte værdier.
Avatar billede nmh Nybegynder
30. november 2003 - 21:17 #12
skriv document.form1.kommentar.value.length
i stedet for form1.kommentar.value.length
og tilsvarende med overskrift-feltet.
Avatar billede jtc Nybegynder
30. november 2003 - 21:18 #13
jamen siden opret.asp er den side som det hele ligger i
det er som om denne ikke bliver aktiveret
<%
If Request("Submit") <> "" Then
%>
Avatar billede nmh Nybegynder
30. november 2003 - 21:19 #14
du skal også skrive
document.form1.dokument.focus();
i stedet for document.form1.focus();
og tilsvarende med overskrift-feltet.

Hvi´s det ikke virker, fortæl, hvad der sker.
Avatar billede jtc Nybegynder
30. november 2003 - 21:20 #15
siden virker jo fint hvis jeg bare ikke bruger denne validering

men når nu felterne er valideret skal Request("Submit") jo være forskellig fra ""

Hvordan gør man det
Avatar billede jtc Nybegynder
30. november 2003 - 21:23 #16
så sker der slet ingen ting hvis jeg skriver det du har skrevet i de 2 sidste indlæg
Avatar billede nmh Nybegynder
30. november 2003 - 21:26 #17
OK, jeg tester lige et par ting, og vender tilbage.
Avatar billede jtc Nybegynder
30. november 2003 - 21:27 #18
okay

men hvis jeg skriver dette validere den og når jeg så har indtastet det korrekt sletter den bare indholdet

<script type="text/JavaScript">
function valider () {
  if ( form1.kommentar.value.length > 0 ) {
  } else {
      alert ("Feltet kommentar skal udfyldes.");
      document.form1.focus(); 
      return false;
  };

  if ( form1.overskrift.value.length > 0 ) {
  } else {
      alert ("Feltet overskrift skal udfyldes.");
      document.form1.focus(); 
      return false;
  };

  document.form1.submit();
}; 
</script>

men skal jeg have en knap der hedder submit eller hvad
Avatar billede nmh Nybegynder
30. november 2003 - 21:39 #19
du skal have en knap, der blot er af typen button.
Så skal du submitte fra funktionen valider.
Det er det jeg lige er ved at teste.
Avatar billede jtc Nybegynder
30. november 2003 - 21:43 #20
okay, for den submitter jo ikke ved
document.form1.submit();
Avatar billede jtc Nybegynder
30. november 2003 - 21:44 #21
men det kan da godt være den submitter, men så kan min funktion:
<%
If Request("Submit") <> "" Then
%>
bare ikke registrere det

Så skal man i stedet lave noget om i den eller er det helt forkert
Avatar billede nmh Nybegynder
30. november 2003 - 21:46 #22
Jeg har snart noget. Vær tålmodig.
Avatar billede jtc Nybegynder
30. november 2003 - 21:49 #23
okay, det er bare i orden, så håber jeg bare det virker :-)
Avatar billede nmh Nybegynder
30. november 2003 - 21:59 #24
Knappen, der aktiverer valider-funktionen:
<input type="button" value="Opret indl&aelig;g" onClick="valider()">

Valider-funktionen:

function valider () {
  if ( form1.kommentar.value.length > 0 ) {
  } else {
      alert ("Feltet kommentar skal udfyldes.");
      form1.kommentar.focus(); 
  };

  if ( form1.overskrift.value.length > 0 ) {
  } else {
      alert ("Feltet overskrift skal udfyldes.");
      form1.overskrift.focus(); 
  };

  form1.submit();
}; 

Erstat

If Request("Submit") <> "" Then

med

if request.form.("kommentar")<>"" then
Avatar billede nmh Nybegynder
30. november 2003 - 22:00 #25
Efter submit-knappen forsvandt var testen
if request("Submit")<>"" then
ikke brugbar mere.
Avatar billede jtc Nybegynder
30. november 2003 - 22:04 #26
så vil den slet ikke vise siden
Avatar billede nmh Nybegynder
30. november 2003 - 22:08 #27
ups:
if request.form.("kommentar")<>"" then
skal være:
if request.form("kommentar")<>"" then

undskyld, en lille fejl smuttede med.
Avatar billede jtc Nybegynder
30. november 2003 - 22:11 #28
ja så er vi ved at være på rette vej men når jeg så udelukkende indsætter en tekst i kommentar og ikke i overskrift oprette den også en post, den skal jo kun oprette en post hvis begge felter er valideret
Avatar billede jtc Nybegynder
30. november 2003 - 22:14 #29
okay det fandt jeg selv ud af ved at skrive

if request.form("kommentar") <> "" and request.form("overskrift") <> "" then

Men når jeg så skriver det ene felt ind og trykker submit så skriver den godt nok at jeg ikke har udfyldt den anden, men når jeg så trykker ok sletter den hele indholdet af formen, kan det man har skrevet ikke blive stående????
Avatar billede nmh Nybegynder
30. november 2003 - 22:25 #30
Et øjeblik. Jeg har fundet fejlen.
Avatar billede jtc Nybegynder
30. november 2003 - 22:26 #31
det fandt jeg også selv ud af ved at skrive

function valider () {
  if ( form1.kommentar.value.length > 0 ) {
  } else {
      alert ("Feltet kommentar skal udfyldes.");
      form1.kommentar.focus(); 
      return false; 
  };

  if ( form1.overskrift.value.length > 0 ) {
  } else {
      alert ("Feltet overskrift skal udfyldes.");
      form1.overskrift.focus(); 
      return false; 
  };

  form1.submit();
};
Avatar billede nmh Nybegynder
30. november 2003 - 22:27 #32
Ja, lige præcis.
Avatar billede jtc Nybegynder
30. november 2003 - 22:35 #33
Jamen så siger jeg mange tak for hjælpen kunne aldrig have gjort det uden dig

Kunne jeg eventuelt få din mail så jeg kan bede om hjælp til et spørgsmål på eksperten, du skal nok få point når jeg beder om hjælp??
Avatar billede nmh Nybegynder
30. november 2003 - 22:37 #34
nmh@ghg.dk
Avatar billede jtc Nybegynder
30. november 2003 - 22:42 #35
Jeg takker mange gange for hjælpen og den fortsatte hjælp
Avatar billede nmh Nybegynder
30. november 2003 - 22:44 #36
Selv tak, det var så lidt.
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