C# 添加到OnFocus codebehind而不删除当前OnFocus
我正在开发一个ASP.NET页面,后端使用c# 我有一些javascript来跟踪回发之前最后一个焦点在哪里,并在回发之后设置它。但是,如果获取焦点的字段是密码字段,则需要在控件获取焦点时清除输入 我添加了如下内容: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",
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('__LASTFOCUS').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语句正常工作:)