Avatar billede dueholm Praktikant
30. september 2002 - 13:21 Der er 19 kommentarer og
1 løsning

Clientside-JavaScript kombineret med ASP

Hejsa!

Jeg har en side hvor jeg har nogle indtastningsfelter!
Disse felter skal jeg så have valideret, og det vil jeg gøre på klient-siden, altså via JavaScript.

Jeg har så en lille "Afsend"-knap. Når man trykker på den så tjekkes inputtet, og er det korretkt vil jeg sende det ned i en database!
Hvordan gør jeg det??

Nedenfor har jeg som en lille illustration skitseret hvordan jeg forestiller mig det kunne gøres!
Men jeg har i browseren fået flg. fejl:
**************************
Fejltype:
Active Server Pages, ASP 0138 (0x80004005)
En scriptblok kan ikke placeres inden i en anden scriptblok.
**************************

Jeg har forestilet mig at det skal se nogenlunde således ud:
*******************************
<html>
<head>
<title>Eksperten spørgsmål</title>

<script language="JavaScript" type="text/JavaScript">
function doSomething() { xxxxx }
</script>

<body>

<% et eller andet med ASP %>

</body>
</head>
</html>
*******************************

På forhånd tak!

Kasper
Avatar billede dk_akj Nybegynder
30. september 2002 - 13:30 #1
Hej Kasper.

Jeg gør sådan her:
// i min asp kode har jeg en gif som gemknap
%>
<a onclick="adddept();"><img src="../img/ok.gif" alt="Klik for at oprette en ny afdeling" name="ok" id="ok" border="0"></a>
<%

// og nederst på siden min javascriptkode
<script language="JavaScript">

        function adddept() {
            var st = document.form.DeptName.value
            if (st.length==0) {
                alert("Du skal indtaste et navn til afdelingen")
                return false
            }
                document.form.submit();           
            }

</script>


Om det er den helt rigtige måde ved jeg ikke, men jeg syntes det virker godt og er overskueligt.

//akj
Avatar billede jgp Nybegynder
30. september 2002 - 13:45 #2
Prøv evt. at rode ldit med denne:
<form method="POST" action="minSide_submit.asp" onsubmit="validering();return false;">

function valideringFlex() {
  if (der er fejl) {
    error = 1;
  }
  if (error == 1) { alert("Invalid data"); return false; }

  document.forms[0].submit();
}
Avatar billede dk_akj Nybegynder
30. september 2002 - 13:52 #3
jpg >> Ved ikke om jeg spørger dumt men...
Er der en grund til at du kalder din funktion for valideringFlex men på onsubmit kalder du validering()

//akj
Avatar billede jgp Nybegynder
30. september 2002 - 14:48 #4
Du spørger ikke dumt, det er mig der har skrevet forkert navn. validering(); og valideringFlex(); skal have samme navn: F.Eks. validering();
Avatar billede dk_akj Nybegynder
30. september 2002 - 14:50 #5
OKi, så er jeg med, jeg tænkte bare om det mon var et eller andet fancy siden den hed Flex, havde du skrevet valideringFornavn var jeg ikke i tvivl.

//akj
Avatar billede jgp Nybegynder
30. september 2002 - 14:55 #6
Beklager, en lille copy & paste fejl fra min side :-)
Avatar billede dueholm Praktikant
01. oktober 2002 - 11:05 #7
Det kan godt være at jeg ikke helt forstår hvad I mener!
Men se lige på flg. kode, der er fra en *.asp-fil:

<%@ LANGUAGE=JScript %>
<html>
<head>
<title>Test-side</title>
<script language="JavaScript" type="text/JavaScript">
.
.
.... client-side script
.
.
</script>
<body .......
.
.
.

Hvorfor duer det ikke? Jeg har jo egentlig endnu ikke lavet noget ASP!

MVH
Kasper
Avatar billede dk_akj Nybegynder
01. oktober 2002 - 11:27 #8
Hvad virker ikke ??
Hvilke fejl får du ??

//akj
Avatar billede dueholm Praktikant
01. oktober 2002 - 11:32 #9
Ok jeg har fundet ud af hvad det er der skaber fejlen!
Inde imellem
<script language="JavaScript" type="text/JavaScript">
og
</script>

Har jeg flg. kommentarer stående:
************************
/*
    Scripts in the head section:
    Scripts to be executed when they are called, or when an event is triggered,
    go in the head section. When you place a script in the head section,
    you will ensure that the script is loaded before anyone uses it.

    Scripts in the body section:
    Scripts to be executed when the page loads go in the body section.
    When you place a script in the body section it generates the content of the page.

    How to Run an External JavaScript
    Sometimes you might want to run the same script on several pages, without writing the script on each and every page.
    To simplify this you can write a script in an external file, and save it with a .js file extension, like this:
        document.write("This script is external")
    Save the external file as xxx.js.
    Note: The external script cannot contain the <script> tag
    Now you can call this script, using the "src" attribute, from any of your pages:
        <html>
        <head>
        </head>
        <body>
        <script src="xxx.js"></script>

        </head></html>
    Remember to place the script exactly where you normally would write the script.
*/

*************************

Men det vil den af en eller anden grund ikke æde..

Kan du fortælle mig hvorfor den ikke vil det?!?
Fejlen er det samme som ovenfor!

Kasper
Avatar billede dk_akj Nybegynder
01. oktober 2002 - 11:35 #10
Bruger du Jscript/vbscript som serverside sprog ??
Avatar billede dueholm Praktikant
01. oktober 2002 - 11:37 #11
<%@ LANGUAGE="JAVASCRIPT" %>
--> svar nok?
:o)
Avatar billede dk_akj Nybegynder
01. oktober 2002 - 11:43 #12
Nej, prøv lige en gang til for prins knud :o)

Nå men det den brokker sig over er at du ikke kan placere en scriptblock( din klientside ) inde i en anden scriptblock (sin serverside)

Prøv at generer din clientside scriptblock med response.write.

//akj
Avatar billede dueholm Praktikant
01. oktober 2002 - 11:50 #13
Jeg beklager at jeg er lidt tungnem.. men jeg er ikke så hård til dette!
response.write -> er det ikke VBScript?

Jeg har dette mega lille eksempel som jeg har testet.. og det virker!

<%@LANGUAGE="JAVASCRIPT"%>
<html>
<head>
<script language="JavaScript" type="text/JavaScript">
document.write("test");
</script>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
</body>
</html>
Avatar billede dk_akj Nybegynder
01. oktober 2002 - 12:32 #14
Her er dit eksempel udbygget en lille smule

//akj

<%@LANGUAGE="JAVASCRIPT"%>
<html>
<form action="dept.asp" method="post" name="form" id="form">
<input type="text" name="DeptName" class="inputbox" size="30" maxlength="255">
<head>



<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<a onclick="adddept();"><img src="../img/ok.gif" alt="Klik for at oprette en ny afdeling" name="ok" id="ok" border="0"></a>


<%
Response.Write("<script language='JavaScript' type='text/JavaScript'>\n");
Response.Write("function adddept() {\n");
Response.Write(" var st = document.form.DeptName.value\n");
Response.Write(" if (st.length==0) {\n");
Response.Write("  alert('Du skal indtaste et navn til afdelingen')\n");
Response.Write("  return false  }\n");
Response.Write("document.form.submit(); }\n");
Response.Write("</script>");
%>

</body>
</html>
</form>
Avatar billede dueholm Praktikant
01. oktober 2002 - 12:38 #15
Jeg kan godt se hvad det er du vil med det!
Men mit problem ligger ikke i selve det script-kode jeg allerede har!

Det er et eller andet med kommentaren... for hvis jeg klipper hele kommentaren ud så virker det fint med mine klient-side scripts!

Nogle forslag?
Skal jeg eventuelt skrive response.write("//kommentar");

Kasper

PS Nu må du hellere få dine point for det spørgsmålet egentlig lød på!
Avatar billede dk_akj Nybegynder
01. oktober 2002 - 12:41 #16
Tak for point, men vi er vel ikke færdige.

Vil du have kommentarerne med ud på klienten eller bare have dem i din .asp fil ??
Avatar billede dueholm Praktikant
01. oktober 2002 - 12:48 #17
Jeg vil gerne have det "sendt" med ud til klienten!

Jeg forstår bare ikke hvorfor den ikke ser hele "blokken" som én stor kommentar!
Alle regler er da overholdt:
Kommentareren er:
1. Skrevet inde imellem /* og */ som eftersigende skulle dække flere linier!

2. /* og */ er begge skrevet imellem <script> og </script>

Jeg kan kun forestille mig at det er fordi der er nogle tags inde kommentaren... og så alligevel ikke!

Jeg aner det ikke!

Kasper
Avatar billede dk_akj Nybegynder
01. oktober 2002 - 12:53 #18
Så vil jeg bare putte kommentaren i <!--  -->

Se eks herunder

//akj

<%@LANGUAGE="JAVASCRIPT"%>
<html>
<form action="dept.asp" method="post" name="form" id="form">
<input type="text" name="DeptName" class="inputbox" size="30" maxlength="255">
<head>

<!--
    Scripts in the head section:
    Scripts to be executed when they are called, or when an event is triggered,
    go in the head section. When you place a script in the head section,
    you will ensure that the script is loaded before anyone uses it.

    Scripts in the body section:
    Scripts to be executed when the page loads go in the body section.
    When you place a script in the body section it generates the content of the page.

    How to Run an External JavaScript
    Sometimes you might want to run the same script on several pages, without writing the script on each and every page.
    To simplify this you can write a script in an external file, and save it with a .js file extension, like this:
        document.write("This script is external")
    Save the external file as xxx.js.
    Note: The external script cannot contain the <script> tag
    Now you can call this script, using the "src" attribute, from any of your pages:
        <html>
        <head>
        </head>
        <body>
        <script src="xxx.js"></script>

        </head></html>
    Remember to place the script exactly where you normally would write the script.
-->


<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<a onclick="adddept();"><img src="../img/otk.gif" alt="Klik for at oprette en ny afdeling" name="ok" id="ok" border="0"></a>


<%
Response.Write("<script language='JavaScript' type='text/JavaScript'>\n");
Response.Write("function adddept() {\n");
Response.Write(" var st = document.form.DeptName.value\n");
Response.Write(" if (st.length==0) {\n");
Response.Write("  alert('Du skal indtaste et navn til afdelingen')\n");
Response.Write("  return false  }\n");
Response.Write("document.form.submit(); }\n");
Response.Write("</script>");
%>

</body>
</html>
</form>
Avatar billede dueholm Praktikant
01. oktober 2002 - 13:02 #19
Nå ja det kan man selvfølgelig gøre...
jamen det tror jeg bare jeg gør... så behøver jeg ikke have hovedpine over det!

Men du kender sikkert nok det at man står med et lille og måske ubetydligt problem, men man vil gerne vide hvad det er man gør forkert!

Nå men jeg takker for din tålmodighed og hjælp!

Kasper
Avatar billede dk_akj Nybegynder
01. oktober 2002 - 13:03 #20
Jeg kender det.

Jeg tror det der er gået galt er at den ikk er kommet ind i script blocken.

akj
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