我想在文本框中设置焦点。如何在文本框控件上使用SetFocus?
SetFocus(txtUserName);
我在网页上看不到任何变化。
.focu()和setfocus()之间有什么区别,每个函数的功能是什么?
我想在文本框中设置焦点。如何在文本框控件上使用SetFocus?
SetFocus(txtUserName);
我在网页上看不到任何变化。
.focu()和setfocus()之间有什么区别,每个函数的功能是什么?
您可以在控制自身使用.Focus()
,或拨打页面的SetFocus()
,传递到控制的参考。请注意,您需要传入控件,而不是ID,因为这似乎不受支持(至少从.NET 3.5开始)。有关更多信息,请参阅MSDN Page.SetFocus。
至于方法之间的区别?它们在很大程度上是可以互换的,并且您应该根据您访问的对象调用更方便的方法 - 通常在控件上调用.Focus()
更容易。请参阅MSDN上的How to Set Focus on ASP.NET Web Server Controls。
txtUserName.Focus()
欲了解更多信息,请查看:
.focu()和setfocus()之间的区别是什么? 以及每个的功能是什么? – 2009-10-07 20:09:44
@NoviceDeveloper - Focus()只是调用SetFocus() - 它们是一样的。 – BornToCode 2016-03-31 12:53:44
控件具有可以调用将焦点设置到控制的聚焦()方法。
txtUserName.Focus();
另外,该页面具有SetFocus的()方法,该方法它可以是一个控制对象或要焦点设置到控制的ID。
this.Page.SetFocus(txtUserName);
或
this.Page.SetFocus(txtUserName.ClientID);
两者功能相同吗? – 2009-10-07 20:22:31
@NoviceDeveloper - 在查看源代码后,答案是肯定的,它们具有相同的功能。 – BornToCode 2016-03-31 12:52:30
根据您希望您的工作流程是怎么样,或者你的规格是什么,你有两个选择:
设定:如果从服务器端。像John提到的那样,您可以使用UI控件可用的Focus()
方法。当页面在浏览器中呈现时,这会将焦点应用于控件。但是,由于用户与页面上的其他元素进行交互,您将会失去它。
使用JavaScript将其设置在客户端。这将为您提供更大的灵活性,因为您可以基于用户交互应用焦点。 要将重点放在客户端,可以使用DOM(文档对象模型)。您需要获取对该控件的引用,然后您可以调用focus()
方法:
document.getElementById(txtUserName).focus();
也就是说,如果控件的ID(因为它在客户端注册)是txtUserName
。根据页面的布局,这种情况不太可能发生,如果您更改布局,则可能会遇到麻烦,所以这不是最佳做法。
一个好的做法是注册一个JavaScript变量,其目的是保存控件的客户端ID,因为它将呈现在HTML中。 您可以通过使用ClientScriptManager类实现这一点:
ClientScript.RegisterClientScriptBlock(this.GetType(), "setFocus", "var focusFieldId = '" + txtUserName.ClientID + "';", true);
,然后在客户端,你可以说
document.getElementById(focusFieldId).focus();
你可以重构这个成例如称为setUserNameFocus()
方法,然后调用该方法无论你想要什么客户端事件。例如,一种流行的做法是当用户点击页面上的某个位置时,将注意力集中在某个字段上。比如你的HTML元素body
可能是这样的,如果你不希望永远失去焦点为你的元素:
<body onload="setUserNameFocus();" onclick="setUserNameFocus();">
到ClientScriptManager的链接是错误的。它指向过时的API。试图编辑答案时出现错误。我稍后会尝试对其进行编辑。与此同时,链接到正确的引用是这样的: http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.aspx – 2009-10-07 21:01:02
有一个简单的方法来此。
在Visual Studio中,将下面的Page_Load事件......
Page.Form.DefaultFocus = TextBox1.ClientID;
Page.Form.DefaultButton = Button1.UniqueID;
请注明的 “回答”,如果回答你的问题。
在客户端或代码隐藏? – 2009-10-07 20:15:28