Avatar billede mireigi Novice
29. april 2004 - 21:43 Der er 8 kommentarer og
1 løsning

Hjælp til valideringsscript

Får en fejl i linie 109: "Et objekt var ventet" i nedenstående valideringsscript... Problemet er bare, at linie 109 kun består af tegnet "}"... Hvilket ikke giver ret meget mening for mig... Så hvis nogen kan kigge det igennem for fejl, og evt. komme med forslag til hvordan det bliver optimeret vil jeg blive glad...

Her er scriptet:

<% if mode = "Edit" then

Session("Videre") = "Profile.asp?mode=Edit"

If Not Session("login") > 0 Then Response.Redirect("Profile.asp?mode=Logon")

SQL = "SELECT * FROM Brugere WHERE Kunde_Nr=" & Session("login")
set RS = Conn.Execute(SQL)

if RS.EOF then
Response.Redirect("Profile.asp?mode=Logon")
else
Do Until RS.EOF
%>
<head>
<meta name="Generator" content="Stone's WebWriter 4">
<link rel="STYLESHEET" type="text/css" href="Menu.css">
<link rel="STYLESHEET" type="text/css" href="Main.css">
<TITLE>Main</TITLE>
<script src="Check_menu.js" type="text/javascript"></script>
<script language="text/javascript">

    function validate()
        {
    if (document.Rediger.Password.value == "")
            {
            alert("Angiv venligst en adgangskode.");
            document.Rediger.Password.focus();
            return false;
            }
            else
            {
            if (document.Rediger.PasswordRepeat.value == "")
                {
                alert("Angiv venligst din adgangskode igen.");
                document.Rediger.Password.focus();
                return false;
                }
                else
                {
                if (document.Rediger.Password.value != Rediger.PasswordRepeat.value)
                    {
                    alert("Tjek venligst at Deres indtastede og gentagne adgangskode er ens.");
                    document.Rediger.PasswordRepeat.focus();
                    return false;
                    }
                    else
                    {
                if (document.Rediger.Navn.value == "")
                        {
                        alert("Angiv venligst Deres navn.");
                        document.Rediger.Navn.focus();
                        return false;
                        }
                        else
                        {
                        if (document.Rediger.Adresse.value == "")
                            {
                            alert("Angiv venligst Deres adresse.");
                            document.Rediger.Adresse.focus();
                            return false;
                            }
                            else
                            {
                            if (document.Rediger.Post_Nr.value == "")
                                {
                                alert("Angiv venligst Deres post nr.");
                                document.Rediger.Post_Nr.focus();
                                return false;
                                }
                                else
                                {
                            if (document.Rediger.By.value == "")
                                    {
                                    alert("Angiv venligst den by De bor i.");
                                    document.Rediger.By.focus();
                                    return false;
                                    }
                                    else
                                    {
                                    if (document.Rediger.Email.value == "")
                                        {
                                        alert("Angiv venligst Deres E-mail adresse.");
                                        document.Rediger.Email.focus();
                                        return false;
                                        }
                                      else
                                        {
                                        if (document.Rediger.Telefon_Nr.value == "")
                                            {
                                          alert("Angiv venligst Deres telefon nr.");
                                          document.Rediger.Telefon_Nr.focus();
                                          return false;
                                          }
                                            else
                                            {
                                            if (document.Rediger.Fax_Nr.value == "")
                                                {
                                                alert("Angiv venligst Deres fax nr.");
                                                document.Rediger.Fax_Nr.focus();
                                                return false;
                                                }
                                            }
                                        }
                                    }       
                                }
                            }
                        }
                    }
                }
            }
          return true;
        }

</script>

</HEAD>
<BODY onunload="<%Session("Videre") = "Profile.asp"%>">
<script src="Frame_menu.js" type="text/javascript"></script>

<form name="Rediger" action="Profile.asp?mode=Send" method="post" onsubmit="return validate()">
<table>
  <tr class="tr0">
    <td class="td0" colspan="2">Kundeinformationer</td>
  </tr>
  <tr class="tr1">
    <td Width="30%">Kunde#</td>
    <td width="559"><%=RS("Kunde_Nr")%></td>
  </tr>
  <tr class="tr2">
    <td Width="30%">Brugernavn</td>
    <td width="559"><%=RS("Brugernavn")%></td>
  </tr>
  <tr class="tr1">
    <td Width="30%">Adgangskode</td>
    <td width="559"><input size="25" type="password" name="Password" value="<%=RS("Password")%>"></td>
  </tr>
    <tr class="tr2">
    <td Width="30%">Gentag adgangskode</td>
    <td width="559"><input size="25" type="password" name="PasswordRepeat" value="<%=RS("Password")%>"></td>
  </tr>
  <tr>
    <td colspan="2">
      <hr>
    </td>
  </tr>
    <tr class="tr0">
    <td class="td0" colspan="2">Kontaktinformationer</td>
  </tr>
  <tr class="tr1">
    <td Width="30%">Navn</td>
    <td width="559"><input size="25" type="text" name="Navn" value="<%=RS("Navn")%>"></td>
  </tr>
  <tr class="tr2">
    <td Width="30%">Adresse</td>
    <td width="559"><input size="25" type="text" name="Adresse" value="<%=RS("Adresse")%>"></td>
  </tr>
  <tr class="tr1">
    <td Width="30%">Post nr.</td>
    <td width="559"><input size="25" type="text" name="Post_Nr" value="<%=RS("Post_Nr")%>"></td>
  </tr>
  <tr class="tr2">
    <td Width="30%">By</td>
    <td width="559"><input size="25" type="text" name="By" value="<%=RS("By")%>"></td>
  </tr>
  <tr class="tr1">
    <td Width="30%">E-mail</td>
    <td width="559"><input size="25" type="text" name="Email" value="<%=RS("Email")%>"></td>
  </tr>
  <tr class="tr2">
    <td Width="30%">Telefon</td>
    <td width="559"><input size="25" type="text" name="Telefon_Nr" value="<%=RS("Telefon_Nr")%>"></td>
  </tr>
  <tr class="tr1">
    <td Width="30%">Fax</td>
    <td width="559"><input size="25" type="text" name="Fax_Nr" value="<%=RS("Fax_Nr")%>"></td>
  </tr>
    <tr class="tr2">
    <td colspan="2"><input type="Submit" value="Send">&nbsp;&nbsp;<input type="Reset" value="Nulstil"></td>
  </tr>
</table>
</form>

</body>

<%
RS.MoveNext
Loop
end if
end if
%>

/MiReiGi
Avatar billede lasseq Nybegynder
29. april 2004 - 21:59 #1
Hej... Ganske utestet, så tror jeg det skyldes at du har valgt "Do until..." allerede inden <html>-headerne (og dermed også din javascript-kode) skrives ud.
Jeg tror fejlen skyldes at Javascript-functionen validate() opstår flere gange, fordi du ganske enkelt skriver den flere gange ud... Prøv at rette din ASP-kode til kun at udskrive det egentlige output og ikke Javascript-koden og det andet i dit loop.

/Lasse
Avatar billede basicq Nybegynder
29. april 2004 - 22:24 #2
Noget af et form tjek du får lavet der... Prøv at se lidt på den her, bare lige en tanke...

<script type="text/javascript">
function validate()
{
    formName = document.forms['rediger'];
    for(i=0; i<formName.length; i++)
    {
        if(formName[i].type == 'text' && formName[i].value.length == 0)
        {
            document.getElementById('error'+[i]).innerHTML="Du mangler at udfylde <b>" + formName[i].name +".</b>";
        }
    }
}
</script>
<div id="error0"></div>
<div id="error1"></div>
<div id="error2"></div>
<div id="error3"></div>
<div id="error4"></div>
<div id="error5"></div>
<div id="error6"></div>
<div id="error7"></div>

<form name="rediger" action="" method="post">
<input  type="text" name="navn">
<input  type="text" name="adresse">
<input  type="text" name="postnr">
<input  type="text" name="by">
<input  type="text" name="email">
<input  type="text" name="telefon">
<input  type="text" name="fax">
<input type="button" value="Send" onClick="java script:validate()">
</form>

Godnat og sov godt.
Avatar billede mireigi Novice
29. april 2004 - 23:07 #3
lasseq -> Din tanke er skam god nok, men det er ikke der problemet ligger... Brugerne/kunderne logger sig ind med et brugernavn, og identificeres på siden via et unikt kunde-nr, hvilket betyder at informationerne kun udskrives én gang...

basicq -> Selvom dit forslag er ok, vil jeg gerne beholde min egen metode... Vil dog bare gerne ha' tjekket den for fejl, da den virker på en anden side med lidt andre navne osv., men den virker ikke på min... Lidt underligt...

Jeg ved godt at den kan optimeres så den næsten ikke fylder noget, men det må vente i øjeblikket, da det bare skal virke ASAP... Scriptet indgår i et e-handelssystem som en ven og jeg laver som årprojekt på skolen, og det skal afleveres på onsdag... Så vil sådan set "bare" gerne ha' det kigget efter...

/MiReiGi
Avatar billede roenving Novice
30. april 2004 - 01:21 #4
Når du laver return false er else simpelthen overflødig, man kommer jo kun til det næste check, hvis den ovenstående ikke har været sand, så overskueligheden kunne øges betydeligt med, og du ville med garanti finde fejlen på et øjeblik:

<script language="text/javascript">
  function validate(f){
    if (f.Password.value == ""){
      alert("Angiv venligst en adgangskode.");
      f.Password.focus();
      return false;
    }
    if (f.PasswordRepeat.value == ""){
      alert("Angiv venligst din adgangskode igen.");
      f.Password.focus();
      return false;
    }
    if (f.Password.value != f.PasswordRepeat.value){
      alert("Tjek venligst at Deres indtastede og gentagne adgangskode er ens.");
      f.PasswordRepeat.focus();
      return false;
    }
    if (f.Navn.value == ""){

--osv...

Og så skal dit form-tag se sådan ud:

<form name="Rediger" action="Profile.asp?mode=Send" method="post" onsubmit="return validate(this)">
Avatar billede roenving Novice
30. april 2004 - 01:23 #5
-- og så skal du huske at javascript-fejl (eller andre client-side-fejl !-) ikke har din asp-kode med, så prøv at kigge på linje 109 ved at kigge i Vis --> Kilde ...
Avatar billede roenving Novice
30. april 2004 - 01:27 #6
<BODY onunload="<%Session("Videre") = "Profile.asp"%>">

ville være den første linje jeg ville mistænke, for hvad tror du html-fortolkeren ser ...
Avatar billede mireigi Novice
24. maj 2004 - 13:01 #7
Hej igen...

har haft lidt problemer med mit login, det blev vistnok slettet under den sidste server-update, men nu kører det åbenbart igen... Dejligt...

Fik løst problemet ved at lege lidt med det, men det var roenving som kom med en del-løsning, og derfor får han lige en slat point... Forudsat at du altså smider et svar...

/MiReiGi
Avatar billede roenving Novice
25. maj 2004 - 16:48 #8
Velbekomme '-)
Avatar billede roenving Novice
26. maj 2004 - 17:04 #9
-- og 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
Vi tilbyder markedets bedste kurser inden for webudvikling

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