C# 添加到OnFocus codebehind而不删除当前OnFocus

C# 添加到OnFocus codebehind而不删除当前OnFocus,c#,asp.net,focus,onfocus,C#,Asp.net,Focus,Onfocus,我正在开发一个ASP.NET页面,后端使用c# 我有一些javascript来跟踪回发之前最后一个焦点在哪里,并在回发之后设置它。但是,如果获取焦点的字段是密码字段,则需要在控件获取焦点时清除输入 我添加了如下内容: protected void Page_Load(object sender, EventArgs e) { if (TextBox.Text.Trim().Length > 0) { TextBox.Attributes.Add("onfocus",

我正在开发一个ASP.NET页面,后端使用c#

我有一些javascript来跟踪回发之前最后一个焦点在哪里,并在回发之后设置它。但是,如果获取焦点的字段是密码字段,则需要在控件获取焦点时清除输入

我添加了如下内容:

protected void Page_Load(object sender, EventArgs e)
{
    if (TextBox.Text.Trim().Length > 0)
    {
    TextBox.Attributes.Add("onfocus", "this.value=''");
    }
}
<asp:TextBox Id="txtPassword" runat="server" TextMode="Password" onfocus="applyFocus(this, true);" ...>
但现在它覆盖了我的JavaScript,所以当我单击下一个文本框时,焦点就丢失了

我可以用某种方式在每行之后添加行吗?像这样:

<asp:TextBox ID="TextBoxPassword" runat="server" TextMode="password" onfocus="try{document.getElementById(&#39;__LASTFOCUS&#39;).value=this.id} catch(e) {} + this.value=''" ></asp:TextBox>

我知道它不能用
+
来完成,但是有什么方法可以做到这一点吗?

相反,这样做(当控件有焦点时总是会清除值)你不能像下面这样从代码隐藏中清除它吗

protected void Page_Load(object sender, EventArgs e)
{
    if (TextBox.Text.Trim().Length > 0)
    {
      TextBox.Text = String.Empty;
    }
}

您应该创建一个JavaScript函数来处理应用焦点:

applyFocus = function(ctrl, clearOnFocus) {
    if (clearOnFocus){
        ctrl.value = "";
    }
    ctrl.focus();
}
您可以这样实现它:

protected void Page_Load(object sender, EventArgs e)
{
    if (TextBox.Text.Trim().Length > 0)
    {
    TextBox.Attributes.Add("onfocus", "this.value=''");
    }
}
<asp:TextBox Id="txtPassword" runat="server" TextMode="Password" onfocus="applyFocus(this, true);" ...>

通过调用asp.net生成的我的文本框的id来解决这个问题

if(document.getElementById('REQUEST_LASTFOCUS') == document.getElementById('MainContent_TextBoxAdgangskode')) 
                    {
                        document.getElementById('MainContent_TextBoxAdgangskode').value = '';
                    }

我不知道这是否是一个直接调用id的“好方法”,但我无法让另一个正常工作。

我忘了提到我在文本框(textbox=password)周围使用了一个updatepanel,所以我只需更新页面的内容,而不是完整的回发。所以我使用asyncpostbacktrigger。无法在具有textmode=“password”的文本框上设置TextBox.Text。我试着将它添加到javascript中,但是没有真正起作用。我不擅长javascript,这正是问题所在。Pastbin链接(因为我不允许发布这么多字符):你真的希望密码字段只在第一次聚焦时丢失内容吗?这看起来不错,James,但我准备好了一个javascript来处理最后一个焦点,它将自己添加到我页面上的每个控件中。那么,我是否可以在javascript中也添加类似的内容:if(document.getElementById('REQUEST_LASTFOCUS')==document.getElementById(''''''){document.getElementById('textboxadgangkode')。value=”“;}另一个javascript处理请求_LASTFOCUS,因此我不确定if中缺少了什么。好吧,所以我发现我太习惯于intellisense:pi,if语句中缺少一个“'),并在其中添加了.clientid,我也在其中添加了值。但它仍然不起作用。下面是脚本现在的代码:再次不要想我是如何得到REQUEST\u LASTFOCUS的,它工作得很好。我只是想让if语句正常工作:)