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?
Annonceindlæg fra Computerworld it-jobbank
Mød 3.500+ it-talenter på IT-DAY 2026
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
19. oktober 2004 - 14:15
#1
Det gøres normalt i JavaScript så man er fri for at submittet siden.
19. oktober 2004 - 14:21
#2
Ok.... Hvordan gøres det?
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>
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?
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);">
19. oktober 2004 - 15:29
#6
Ok.... på den måde...!!! Troede lige at det ikke skulle stå samme sted som den plejer!
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.
19. oktober 2004 - 15:37
#8
Hmmm.... nu kommer der bare den der Siden kan ikke vises!
19. oktober 2004 - 15:44
#9
"Siden kan ikke vises" plejer at være pga af en ASP fejl.
19. oktober 2004 - 15:46
#10
Sletter jeg det her: onSubmit="return checkForm(this);"> Så går det meget fint!
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();
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();}">
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!
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>
20. oktober 2004 - 09:13
#15
Det kan jeg godt nok ikke få til at virke!
20. oktober 2004 - 09:32
#16
har du noget kode??
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"> Logged in as: <%response.write Session("contact")%><br> <font size="1" face="Arial">Customer Number: <% response.write Session("customer")%><br> <font size="1" face="Arial">Your LoginID is: <% response.write Session("LoginID")%></font></p> <center> <td width="25%"> </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> </font></td> </tr> <tr> <td width="30%"><% response.write ("<font size='1' face='Arial'>") & Session("ENDText") %><font face="Arial" size="1"><br> </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> </font></td> </tr> <tr> <td width="30%"><font face="Arial" size="1">Antal:<br> </font></td> <td width="70%"><font size="1" face="Arial"><input type="text" name="Antal" size="4"><br> </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%"> </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%"> </td> <td width="25%"> </td> <td width="25%"> </td> <td width="25%"> </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>
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"> Logged in as: <%response.write Session("contact")%><br> <font size="1" face="Arial">Customer Number: <% response.write Session("customer")%><br> <font size="1" face="Arial">Your LoginID is: <% response.write Session("LoginID")%></font></p> <center> <td width="25%"> </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> </font></td> </tr> <tr> <td width="30%"><% response.write ("<font size='1' face='Arial'>") & Session("ENDText") %><font face="Arial" size="1"><br> </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> </font></td> </tr> <tr> <td width="30%"><font face="Arial" size="1">Antal:<br> </font></td> <td width="70%"><font size="1" face="Arial"><input type="text" name="Antal" size="4"><br> </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%"> </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%"> </td> <td width="25%"> </td> <td width="25%"> </td> <td width="25%"> </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.
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.
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]"
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".
20. oktober 2004 - 13:57
#22
Det er bare helt ok... Takker!!!!
20. oktober 2004 - 14:03
#23
no prob. .o) <-- One Eyed Jack
Kurser inden for grundlæggende programmering