我想在文本框中設置焦點。如何在文本框控件上使用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