我有一个带有文本框和按钮的页面。当页面加载时,通常焦点位于其中一个文本框中,我不希望这种情况发生。但是,我不想在页面加载事件中使用 setfocus 之类的东西,因为当单击按钮时,页面会跳转。如何防止文本框或任何控件关注页面加载?
问问题
1095 次
3 回答
1
奇怪的。默认情况下,除非您设置焦点,否则页面不会关注任何表单输入。
我认为您必须通过页面上的 Setfocus 取消所有焦点。
protected void Page_Load(object sender, EventArgs e)
{
// make sure its not a postback
if (!IsPostBack)
{
// your code
InitForm();
InitBlaBlaBla();
SetFocusOnThis();
SetFocusOnThat();
// cancel all focus
Focus();
}
else
{
// this is a postback,
// set focus on control which make post back
Control control = null;
if (!string.IsNullOrEmpty(Page.Request.Params[postEventSourceID]))
{
control = Page.FindControl(Page.Request.Params[postEventSourceID]);
}
else
{
// if postEventSourceID is null, its a button
// find it by iterating all controls
foreach (string ctl in Page.Request.Form)
{
Control c = Page.FindControl(ctl);
if (c is System.Web.UI.WebControls.Button)
{
control = c;
break;
}
}
}
// finally
control.Focus();
}
}
于 2009-08-08T19:12:01.797 回答
1
基本上我想要做的是当页面加载是从另一个页面重定向的结果时,不要在任何文本框中设置焦点,只需正常加载页面,但是如果页面加载是由于单击控件上的页面,将焦点保持在该控件上/附近。
为此,您必须测试post back。如果您检测到页面已被回发,您可以按照您的意图将焦点设置到控件。否则,页面不会被回发 (GET),因此您可以避免将焦点放在控件上。
据我所知,默认情况下,ASP.NET Webforms 不会将焦点设置在任何textbox
es 上。你确定你没有一些代码隐藏方法将焦点设置在textbox
?
于 2009-08-08T19:12:23.527 回答
0
事实证明,freetextbox 控件在 IE7 和 IE6 上表现出这种行为。这是他们正在调查的错误。
于 2009-08-11T23:39:32.440 回答