| Snippet | C# | Javascript | Browsers | Client Side | Web |
SummarySetting the cursor focus to a particular element of a web page when it loads is a pretty common little feature, but it can be annoying to implement. Here I automated the process in a C# method. You only need to pass the Control to the method and it will register the Javascript and set focus on page load.
This code was adapted from work by Fons.Sonnemans@reflectionit.nl.
|
| Setup a couple of text boxes to test by adding the following to your aspx page. |
Example: How to use the SetInitialFocus method<P><asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
<P><INPUT id="htmlTextBox" type="text" runat="server">
|
Then call the following method from the Page_Load in the code behind file. Notice that this works for WebControls and HtmlControls.
|
Example: How to use the SetInitialFocus methodpublic void TestSetInitialFocus()
{
Snippets00004.SetInitialFocus(htmlTextBox);
}
|
If you load the test aspx page in your browser, you should see that the selected control has the cursor focus.
Here's the class:
|
The SetInitialFocus method embedded in a class.namespace Cambia.CoreLib
{
using System;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
///
/// </summary>
public class Snippets00004
{
public Snippets00004()
{
}
public static void SetInitialFocus(Control control)
{
if (control.Page.IsClientScriptBlockRegistered("InitialFocus"))
return;
if (control.Page == null)
{
throw new ArgumentException(
"The Control must be added to a Page before "
+ "you can set the IntialFocus to it.");
}
if (control.Page.Request.Browser.JavaScript == true)
{
StringBuilder s = new StringBuilder();
s.Append("\n<SCRIPT LANGUAGE='JavaScript'>\n");
s.Append("<!--\n");
s.Append("function SetInitialFocus()\n");
s.Append("{\n");
s.Append(" document.");
Control p = control.Parent;
while (!(p is System.Web.UI.HtmlControls.HtmlForm))
p = p.Parent;
s.Append(p.ClientID);
s.Append("['");
s.Append(control.UniqueID);
RadioButtonList rbl = control as RadioButtonList;
if (rbl != null)
{
string suffix = "_0";
int t = 0;
foreach (ListItem li in rbl.Items)
{
if (li.Selected)
{
suffix = "_" + t.ToString();
break;
}
t++;
}
s.Append(suffix);
}
if (control is CheckBoxList)
{
s.Append("_0");
}
s.Append("'].focus();\n");
s.Append("}\n");
if (control.Page.SmartNavigation)
s.Append("window.setTimeout(SetInitialFocus, 500);\n");
else
s.Append("window.onload = SetInitialFocus;\n");
s.Append("// -->\n"
s.Append("</SCRIPT>");
if (!control.Page.IsClientScriptBlockRegistered("InitialFocus"))
control.Page.RegisterClientScriptBlock("InitialFocus",
s.ToString());
}
}
}
} |
|