Karl Seguin said:
There are ways, but why not just use Page.RegisterStartupScript?
Dim str As New System.Text.StringBuilder
str.Append("<script language=""JavaScript"">")
str.Append(System.Environment.NewLine)
str.Append("document.forms[0].txtLogon.focus();")
str.Append(System.Environment.NewLine)
str.Append("</script>")
Page.RegisterStartupScript("SetFocus", str.ToString())
That is a great idea. I didn't know this existed. I started looking
into
how this works and tried to create a small page that really does nothing,
but I wanted to look at how the RegisterStartupScript works. I am
running
into the same error I have had before whenever I try to put a tag into a
string. I usually get an error.
Here is the page I am using:
****************************************************************************
*****
<%@ Page Language="VB" trace="false" debug="true" AutoEventWireup="true"
ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ Import Namespace="System.Web.Mail" %>
<html>
<script runat="server">
sub sendEmail_click ( sender as Object, e as EventArgs )
Call setFocus(txtLogon)
End Sub
Private Sub SetFocus(ByVal ctrl As Control)
' Define the JavaScript function for the specified control.
Dim focusScript As String = "<script language='javascript'>" & _
"document.getElementById('" + ctrl.ClientID &
"').focus();</script>"
' Add the JavaScript code to the page.
Page.RegisterStartupScript("FocusScript", focusScript)
End Sub
</script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Home Page</title>
<link href="staffing.css" rel="stylesheet" type="text/css">
</head>
<body>
<form id="Form1" runat="server">
<center>
<br>
<table width="500" border="0" cellspacing="0" cellpadding="2">
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td width="114" colspan=2><span class="style1">Simply enter your
email
address below and we'll email you your password. </span></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td align="right">Email Address: </td>
<td><asp:textbox id="txtLogon" runat="server" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value=" Send "
onClick="sendEmail_click"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
<br>
</center>
</form>
</body>
</html>
****************************************************************************
***
I get the following error:
*******************************************************************
Compiler Error Message: BC30648: String constants must end with a double
quote.
Source Error:
Line 11: ' Define the JavaScript function for the specified control.
Line 12: Dim focusScript As String = "<script language='javascript'>" &
_
Line 13: "document.getElementById('" + ctrl.ClientID &
"').focus();</script>"
Line 14:
Line 15: ' Add the JavaScript code to the page.
**************************************************************************
If I take out any character from "</script>" (doesn't matter which
character), I don't get the error.
So it obviously has nothing to do with the double quotes.
Why does this happen?
I am not even into the RegisterStartupScript yet, until I can solve this
question.
Thanks,
Tom
Nice function to have in a utility class...
Karl
--
MY ASP.Net tutorials
http://www.openmymind.net/
Is there a way during Page_Load to change or add an attribute to the Body
tag?
I want to be able to change the onLoad body attribute to do a focus on
one
of my text boxes, such as:
onLoad="document.forms[0].txtLogon.focus();"
The problem is I have my <body> in an include file and want to set the
onLoad attribute during Page_Load time.
Thanks,
Tom.