[英]C# - How to change value of textbox on focus
我正在用 C# 編寫一個應用程序。 我想在用戶單擊(聚焦)文本框后替換 TEXT 屬性的值。 當他們單擊以編輯文本框時,我想將 TEXT 值設置為空白而不是“在此處輸入名稱”一詞。
前端:
<asp:TextBox Text="ENTER NAME HERE" OnClick="MyTextboxID_OnClick" ID="MyTextboxID" runat="server"></asp:TextBox>
代碼隱藏:
protected void MyTextboxID_OnClick(object sender, EventArgs e)
{
MyTextboxID.Text = "";
}
我試圖找到這個問題的答案,但答案並不完全符合我想要做的。
我希望 C# 有類似於 Javascript 的“OnClick”或“OnFocus”事件的東西。 出於說明目的,我將 OnClick 事件添加到文本框。 此 OnClick 事件不起作用。
預先感謝您的幫助!
請記住,ASP.NET 主要是服務器端的。 在 C# 中運行的操作需要回發到服務器。 使用 AJAX 可以在一定程度上減輕這種情況對頁面的影響,但這就是為什么在 ASP 控件之外看不到“OnClick”事件的原因。
但是,您仍然可以使用 Javascript“OnClick”事件。 由於 Javascript 在客戶端上運行,並且此實例中的交互完全在客戶端上處理,因此您應該使用它。
如果您不習慣使用 Javascript,您可能需要查看TextBoxWatermark服務器端控件。
它是可用的NuGet 。
<asp:TextBox OnClick="MyTextboxID_OnClick"
ID="MyTextboxID" runat="server">
</asp:TextBox>
<ajaxToolkit:TextBoxWatermarkExtender ID="TBWE2" runat="server"
TargetControlID="MyTextboxID"
WatermarkText="ENTER NAME HERE"
WatermarkCssClass="watermarked" />
為什么不使用占位符屬性,而根本不必擔心替換文本。 這將顯示文本框何時為空但在焦點上消失
您應該簡單地使用以下Placeholder="Enter text here."
選項一:
<asp:Textbox id="txtName" runat="server" placeholder="Enter name here." />
選項二:
$("#<%= txtName.ClientId %>").setAttribute('placeholder', 'Enter name here.');
$("#<%= txtName.ClientId %>").attr('placeholder', 'Enter name here.');
對於 Javascript 實現,您只需將它放在您的視圖中並將其包裝在: <script type="text/javascript"></script>
。 這些是顯示焦點清晰的文本的理想方法。
您還可以使用Tooltip
。 希望這些例子對你有所幫助。 重要說明,我對 IE 8 與占位符的兼容性沒有任何問題。 此外,這些方法不會強制由於服務器端而可能發生的回發。 這將迫使您執行回發或實施更新面板/Ajax以隱藏回發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.