在页面加载时将焦点设置在文本框上

时间:2011-09-08 14:30:02

标签: c# javascript asp.net html

我已经尝试了How do you automatically set the focus to a textbox when a web page loads?

中的信息
 <asp:TextBox ID="tbSearchLastName" runat="server" style="float:right" CssClass="search" tabindex="1" meta:resourcekey="tbSearchLastNameResource" />

                        <script type="text/javascript">
                            window.onload = function () {
                                document.getElementById("tbSearchLastName").focus();
                            };
                        </script>

我希望页面加载时页面焦点位于文本框上,但我收到错误:

“无法获取属性'焦点'的值:对象为空或未定义”

感谢。

6 个答案:

答案 0 :(得分:5)

你必须这样做......

document.getElementById('<%= tbSearchLastName.ClientID%>').focus();

答案 1 :(得分:2)

您为TextBox(或任何.NET控件)提供的ID与HTML中呈现的ID不同。要获得正确的ID,您需要执行以下操作:

 document.getElementById("<%=tbSearchLastName.ClientID %>")

或者,如果您使用的是.NET 4,you can force it to keep the same ID

 <asp:TextBox ID="tbSearchLastName" ClientIDMode="Static" runat="server"/>

答案 2 :(得分:1)

检查您的页面来源(在浏览器中)tbSearchLastName的真实ID是什么。可能它没有加载或已被更改

答案 3 :(得分:1)

为什么不把tbSearchLastName.Focus()放在page_load方法的代码中?

http://msdn.microsoft.com/en-us/library/system.web.ui.control.focus.aspx

答案 4 :(得分:1)

protected void Page_Load(object sender, EventArgs e)
{
    Form.DefaultFocus = "tbSearchLastName";
}

答案 5 :(得分:0)

protected void Page_Load(object sender,EventArgs e){
tbSearchLastName.focus();
}

你可以在aspx.cs文件上试试这个,简单而优雅