Avatar billede bredan1977 Nybegynder
19. oktober 2004 - 14:11 Der er 22 kommentarer og
1 løsning

MsgBox med Advarsel!

Kan man ikke lave en msgbox, der popper op, hvis man ikke har udfyldt alle felterne eller ikke har valgt noget i en form?
Avatar billede fennec Nybegynder
19. oktober 2004 - 14:15 #1
Det gøres normalt i JavaScript så man er fri for at submittet siden.
Avatar billede bredan1977 Nybegynder
19. oktober 2004 - 14:21 #2
Ok....

Hvordan gøres det?
Avatar billede fennec Nybegynder
19. oktober 2004 - 14:34 #3
Man kalder en funktion onSubmit på formen som returnere true eller false afhængig af om valideringen fejlede. Den retur værdi returneres så til formen. Hvis den er false bliver formen ikke sendt. Du kan så lægge popup ind i tjekket. I dette eks opbygger jeg en tekst til brugerne så der kun er en popup med alt info, så der ikke kommer en popup for hver fejl.

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function checkForm(formRef)
{
  alertTekst = ""
  returval = true;
  if(formRef.test1.value=="")
  {
    alertTekst += "Mangler data i test1 feltet\n"
    returval = false;
  }
  if(formRef.test2.value=="")
  {
    alertTekst += "Mangler data i test2 feltet\n"
    returval = false;
  }
  if (!returval)
    alert(alertTekst);
  return returval;
}
//-->
</SCRIPT>
<form ... onSubmit="return checkForm(this);">
<input name="test1">
<input name="test2">
</form>
Avatar billede bredan1977 Nybegynder
19. oktober 2004 - 14:50 #4
Ok... det kan jeg "næsten" godt se.... men hvor står der at den eks skal gå til resultat.asp?
Avatar billede fennec Nybegynder
19. oktober 2004 - 15:02 #5
Du skriver jo på formen hvor den skal submitte til.

<form method="post" action="resultat.asp" onSubmit="return checkForm(this);">
Avatar billede bredan1977 Nybegynder
19. oktober 2004 - 15:29 #6
Ok.... på den måde...!!! Troede lige at det ikke skulle stå samme sted som den plejer!
Avatar billede fennec Nybegynder
19. oktober 2004 - 15:37 #7
Nope. Det er det samme.
Der er dog en lille ting, der skal nævnes. Hvis du submitter formen gennem JavaScript (det gøres med document.Dinform.submit();) bliver onSubmit handlingen ikke kørt. Der skal du selv kalde checkfunktionen før du submitter.
Avatar billede bredan1977 Nybegynder
19. oktober 2004 - 15:37 #8
Hmmm.... nu kommer der bare den der Siden kan ikke vises!
Avatar billede fennec Nybegynder
19. oktober 2004 - 15:44 #9
"Siden kan ikke vises" plejer at være pga af en ASP fejl.
Avatar billede bredan1977 Nybegynder
19. oktober 2004 - 15:46 #10
Sletter jeg det her:
onSubmit="return checkForm(this);">

Så går det meget fint!
Avatar billede bredan1977 Nybegynder
19. oktober 2004 - 15:50 #11
Det var fordo at den skulle lyde:
onSubmit="return checkForm(this)";">
og ikke:
onSubmit="return checkForm(this);">

Men det er ligeglad med om textboxen Antal er TOM eller ej!

Hvad var det med:
document.Dinform.submit();
Avatar billede fennec Nybegynder
19. oktober 2004 - 15:59 #12
Det skal være sådan her:
<form .... onSubmit="return checkForm(this);">

document.Dinform.submit(); er en måde at sende en form på.

<input type="submit" value="send">
<input type="button" value="send" onClick="document.Dinform.submit();">
er begge måder at sende en form på. Men den sidste affyrer ikke onSubmit funktionen på formen. Den skal man selv køre, hvis man har en. Så det bliver til:

<input type="button" value="send" onClick="if(checkForm(document.Dinform)){document.Dinform.submit();}">
Avatar billede bredan1977 Nybegynder
20. oktober 2004 - 08:58 #13
Der hvor der står "DimForm"... hvad skal der stå der?

Der sker bare ingenting, når jeg trykker på knappen!
Avatar billede fennec Nybegynder
20. oktober 2004 - 09:04 #14
Det er navnet på din form. F.eks:

<form name="NavnPaaForm" action="enSide.asp">
...
...
<input type="button" value="send" onClick="document.NavnPaaForm.submit();">
</form>
Avatar billede bredan1977 Nybegynder
20. oktober 2004 - 09:13 #15
Det kan jeg godt nok ikke få til at virke!
Avatar billede fennec Nybegynder
20. oktober 2004 - 09:32 #16
har du noget kode??
Avatar billede bredan1977 Nybegynder
20. oktober 2004 - 09:43 #17
<%@ Language=VBScript %>
<!--#INCLUDE VIRTUAL="islogin.asp"-->
<html>
<head>
<meta http-equiv="Content-Language" content="da">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Ny side 1</title>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function checkForm(formRef)
{
  alertTekst = ""
  returval = true;
  if(formRef.Antal.value=="")
  {
    alertTekst += "Mangler data i test1 feltet\n"
    returval = false;
  }
  if(formRef.test2.value=="")
  {
    alertTekst += "Mangler data i test2 feltet\n"
    returval = false;
  }
  if (!returval)
    alert(alertTekst);
  return returval;
}
//-->
</SCRIPT>
<style fprolloverstyle>A:hover {color: #050B51; font-size: 8 pt; font-family: Arial}
a {text-decoration:none;}
</style>
</head>

<body bgproperties="fixed" background="images/line.gif" topmargin="0" leftmargin="0" link="#008000" vlink="#008000" alink="#008000">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../cgi-data/database.mdb")
Conn.Open DSN

Session("END") = Session("END")

If Session("END") = 1 Then
    Session("EndText") = "Weldend Material: "
   
    set rsEndMateriale= server.Createobject("ADODB.Recordset")
    SQL_String = "Select Distinct MATERIALE from svejseendedata order by MATERIALE ASC"
    rsEndMateriale.open SQL_String, Conn

else
end if

If  Session("END") = 2 or Session("END") = 3 Then
    Session("EndText") = "Flange Material: "

    set rsEndMateriale= server.Createobject("ADODB.Recordset")
    SQL_String = "Select Distinct Standard from flangedata order by STANDARD ASC"
    rsEndMateriale.open SQL_String, Conn
else
end if

strSQLSpec = "Select * From products WHERE Id= " & Request.Querystring("ID")
Set rsEJ = Conn.Execute(strSQLSpec)

  Session("OrderNumber") = Session("OrderNumber")
  Session("EjTYPE") = rsEJ("NAVN")
  Session("EjPrice") = rsEJ("PRIS")
  Session("EjID") = Request.Querystring("ID") 
%>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4" bgcolor="#050B51">
  <tr>
    <td width="100%"><img border="0" src="images/logo.jpg"></td>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
<div align="center">
<p align="left"><font size="1" face="Arial">&nbsp;&nbsp;&nbsp;Logged in as: <%response.write Session("contact")%><br>
&nbsp;&nbsp;&nbsp;<font size="1" face="Arial">Customer Number: <% response.write Session("customer")%><br>
&nbsp;&nbsp;&nbsp;<font size="1" face="Arial">Your LoginID is: <% response.write Session("LoginID")%></font></p>

<center>

    <td width="25%">&nbsp;</td>
    <td width="50%" colspan="2">

<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2" bgcolor="#F3F3F3">
<tr>
    <td width="100%">
    <form name="FormRef" method="POST" action="ejadd.asp" onSubmit="return checkForm(this)";">
   
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">
<tr>
    <td width="100%" colspan="2"><font face="Arial" size="1"><br>
    You wanna ad this Expansion Joint to your order:<b>
    <%
    strDetails = rsEJ("NAVN")
    strLink = "<a href='ejspec.asp?id=" & rsEJ("Id") & "'>" & strDetails & "</a>"
    response.write strLink
    %></b><br>
    <br>
&nbsp;</font></td>
</tr>
<tr>
    <td width="30%"><% response.write ("<font size='1' face='Arial'>") & Session("ENDText") %><font face="Arial" size="1"><br>
&nbsp;</font></td>
    <td width="70%"><font size="1" face="Arial">
    <select size="1" name="EndType">
    <%
    Do until rsEndMateriale.EOF
    If  Session("END") = 1 Then
        response.write "<option value='"& rsEndMateriale("MATERIALE") & "'>" & rsEndMateriale("MATERIALE")
    else
        response.write "<option value='"& rsEndMateriale("STANDARD") & "'>" & rsEndMateriale("STANDARD")
    end if
    rsEndMateriale.movenext
    loop
    %>
    </select><br>
&nbsp;</font></td>
</tr>
<tr>
    <td width="30%"><font face="Arial" size="1">Antal:<br>
&nbsp;</font></td>
    <td width="70%"><font size="1" face="Arial"><input type="text" name="Antal" size="4"><br>
&nbsp;</font></td>
</tr>
<tr>
    <td width="30%"><font face="Arial" size="1">Special Marking:<br></font></td>
    <td width="70%"><font size="1" face="Arial">
    <input type="text" name="SpecMarking" size="20"><br></font></td>
</tr>
<tr>
    <td width="30%"><font face="Arial" size="1"><br>
    Documentation:</font></td>
    <td width="70%"><font size="1" face="Arial"><br>
    <input type="checkbox" name="Doc31B" value="ON"> 3.1B Material Certificate</font></td>
</tr>
<tr>
    <td width="30%">&nbsp;</td>
    <td width="70%"><font size="1" face="Arial">
    <input type="checkbox" name="DocPED" value="ON"> PED (CE-Marking)</font></td>
</tr>
</table>
<p>

    <input type="button" value="send" onClick="if(checkForm(document.FormRef)){document.FormRef.submit();}">
    </font></p>
</form>
<p><font face="Arial" size="1"><br></font></td>
</tr>
</table>
    </td>
</tr>
<tr>
    <td width="25%">&nbsp;</td>
    <td width="25%">&nbsp;</td>
    <td width="25%">&nbsp;</td>
    <td width="25%">&nbsp;</td>
  </tr> 
  <tr>
    <td width="100%" colspan="4">
    <div align="center">
      <center>
      <table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="50%" id="AutoNumber5" bgcolor="#FFFFFF">
        <tr>
          <td width="100%">
          <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber6" bgcolor="#FFFFFF">
            <tr>
              <td width="100%"><font size="1">Options</font></td>
            </tr>
            <tr>
              <td width="100%"><font size="1" face="Arial"><a href="java script:history.back(-1);">Go Back</a></td>
            </tr>
            <tr>
              <td width="100%"><a href="java script:window.close();"><font face="Arial" size="1">Logout</font></td>
            </tr>
          </table>
          </td>
        </tr>
      </table>
      </center>
    </div>
    </td>
  </tr>
</table>
</font></font>
</body>

</html>
Avatar billede fennec Nybegynder
20. oktober 2004 - 12:29 #18
Prøv denne:

<%@ Language=VBScript %>
<!--#INCLUDE VIRTUAL="islogin.asp"-->
<html>
<head>
<meta http-equiv="Content-Language" content="da">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Ny side 1</title>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function checkForm(formRef)
{
  alertTekst = ""
  returval = true;
  if(formRef.Antal.value=="")
  {
    alertTekst += "Mangler data i Antal feltet\n"
    returval = false;
  }
  if(formRef.SpecMarking.value=="")
  {
    alertTekst += "Mangler data i Special Marking feltet\n"
    returval = false;
  }
  if (!returval)
    alert(alertTekst);
  return returval;
}
//-->
</SCRIPT>
<style fprolloverstyle>A:hover {color: #050B51; font-size: 8 pt; font-family: Arial}
a {text-decoration:none;}
</style>
</head>

<body bgproperties="fixed" background="images/line.gif" topmargin="0" leftmargin="0" link="#008000" vlink="#008000" alink="#008000">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../cgi-data/database.mdb")
Conn.Open DSN

Session("END") = Session("END")

If Session("END") = 1 Then
    Session("EndText") = "Weldend Material: "
   
    set rsEndMateriale= server.Createobject("ADODB.Recordset")
    SQL_String = "Select Distinct MATERIALE from svejseendedata order by MATERIALE ASC"
    rsEndMateriale.open SQL_String, Conn

else
end if

If  Session("END") = 2 or Session("END") = 3 Then
    Session("EndText") = "Flange Material: "

    set rsEndMateriale= server.Createobject("ADODB.Recordset")
    SQL_String = "Select Distinct Standard from flangedata order by STANDARD ASC"
    rsEndMateriale.open SQL_String, Conn
else
end if

strSQLSpec = "Select * From products WHERE Id= " & Request.Querystring("ID")
Set rsEJ = Conn.Execute(strSQLSpec)

  Session("OrderNumber") = Session("OrderNumber")
  Session("EjTYPE") = rsEJ("NAVN")
  Session("EjPrice") = rsEJ("PRIS")
  Session("EjID") = Request.Querystring("ID") 
%>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4" bgcolor="#050B51">
  <tr>
    <td width="100%"><img border="0" src="images/logo.jpg"></td>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
<div align="center">
<p align="left"><font size="1" face="Arial">&nbsp;&nbsp;&nbsp;Logged in as: <%response.write Session("contact")%><br>
&nbsp;&nbsp;&nbsp;<font size="1" face="Arial">Customer Number: <% response.write Session("customer")%><br>
&nbsp;&nbsp;&nbsp;<font size="1" face="Arial">Your LoginID is: <% response.write Session("LoginID")%></font></p>

<center>

    <td width="25%">&nbsp;</td>
    <td width="50%" colspan="2">

<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2" bgcolor="#F3F3F3">
<tr>
    <td width="100%">
    <form name="MyForm" method="POST" action="ejadd.asp" onSubmit="return checkForm(this)";">
   
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">
<tr>
    <td width="100%" colspan="2"><font face="Arial" size="1"><br>
    You wanna ad this Expansion Joint to your order:<b>
    <%
    strDetails = rsEJ("NAVN")
    strLink = "<a href='ejspec.asp?id=" & rsEJ("Id") & "'>" & strDetails & "</a>"
    response.write strLink
    %></b><br>
    <br>
&nbsp;</font></td>
</tr>
<tr>
    <td width="30%"><% response.write ("<font size='1' face='Arial'>") & Session("ENDText") %><font face="Arial" size="1"><br>
&nbsp;</font></td>
    <td width="70%"><font size="1" face="Arial">
    <select size="1" name="EndType">
    <%
    Do until rsEndMateriale.EOF
    If  Session("END") = 1 Then
        response.write "<option value='"& rsEndMateriale("MATERIALE") & "'>" & rsEndMateriale("MATERIALE")
    else
        response.write "<option value='"& rsEndMateriale("STANDARD") & "'>" & rsEndMateriale("STANDARD")
    end if
    rsEndMateriale.movenext
    loop
    %>
    </select><br>
&nbsp;</font></td>
</tr>
<tr>
    <td width="30%"><font face="Arial" size="1">Antal:<br>
&nbsp;</font></td>
    <td width="70%"><font size="1" face="Arial"><input type="text" name="Antal" size="4"><br>
&nbsp;</font></td>
</tr>
<tr>
    <td width="30%"><font face="Arial" size="1">Special Marking:<br></font></td>
    <td width="70%"><font size="1" face="Arial">
    <input type="text" name="SpecMarking" size="20"><br></font></td>
</tr>
<tr>
    <td width="30%"><font face="Arial" size="1"><br>
    Documentation:</font></td>
    <td width="70%"><font size="1" face="Arial"><br>
    <input type="checkbox" name="Doc31B" value="ON"> 3.1B Material Certificate</font></td>
</tr>
<tr>
    <td width="30%">&nbsp;</td>
    <td width="70%"><font size="1" face="Arial">
    <input type="checkbox" name="DocPED" value="ON"> PED (CE-Marking)</font></td>
</tr>
</table>
<p>

    <input type="submit" value="send">
    </font></p>
</form>
<p><font face="Arial" size="1"><br></font></td>
</tr>
</table>
    </td>
</tr>
<tr>
    <td width="25%">&nbsp;</td>
    <td width="25%">&nbsp;</td>
    <td width="25%">&nbsp;</td>
    <td width="25%">&nbsp;</td>
  </tr> 
  <tr>
    <td width="100%" colspan="4">
    <div align="center">
      <center>
      <table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="50%" id="AutoNumber5" bgcolor="#FFFFFF">
        <tr>
          <td width="100%">
          <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber6" bgcolor="#FFFFFF">
            <tr>
              <td width="100%"><font size="1">Options</font></td>
            </tr>
            <tr>
              <td width="100%"><font size="1" face="Arial"><a href="java script:history.back(-1);">Go Back</a></td>
            </tr>
            <tr>
              <td width="100%"><a href="java script:window.close();"><font face="Arial" size="1">Logout</font></td>
            </tr>
          </table>
          </td>
        </tr>
      </table>
      </center>
    </div>
    </td>
  </tr>
</table>
</font></font>
</body>

</html>

Du havde ikke fjernet/tilrettet alle if-sætningerne i checket, så den fejlede på
if(formRef.test2.value=="")

Jeg har også ændret navnet på formen, så den ikke hedder det samme som variablen (der bliver overført) i funktionen.
Avatar billede fennec Nybegynder
20. oktober 2004 - 12:31 #19
... Jeg har også ændret knappen til en submitknap. Der er ingen grund til at bruge en almindelig knap, når du kan bruge en submitknap i stedet.
Avatar billede bredan1977 Nybegynder
20. oktober 2004 - 13:22 #20
Fedt nok... det spiller bare MAX!

Men kunne man ikke få en title på den popup box der?

Det ser lidt dumt ud at der står "[JavaScript Application]"
Avatar billede fennec Nybegynder
20. oktober 2004 - 13:41 #21
Nope. Man kan ikke ændre titel bar'en på alert, promt og confirm bokse.
Går ud fra du bruger FireFox, da den viser det sådan. Hvis du brugte IE ville der stå "Microsoft Internet Explore".
Avatar billede bredan1977 Nybegynder
20. oktober 2004 - 13:57 #22
Det er bare helt ok...

Takker!!!!
Avatar billede fennec Nybegynder
20. oktober 2004 - 14:03 #23
no prob.
.o) <-- One Eyed Jack
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