添加到OnFocus代码隐藏而不删除当前的OnFocus

时间:2011-10-17 13:36:00

标签: c# asp.net focus onfocus

我正在后端开发一个带有c#的ASP.NET页面。

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

我已添加如下:

protected void Page_Load(object sender, EventArgs e)
{
    if (TextBox.Text.Trim().Length > 0)
    {
    TextBox.Attributes.Add("onfocus", "this.value=''");
    }
}

但现在它覆盖了我的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>

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

3 个答案:

答案 0 :(得分:0)

而不是这样做(它会在控件有焦点时清除值)你不能从后面的代码中清除它,如下所示

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

答案 1 :(得分:0)

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

applyFocus = function(ctrl, clearOnFocus) {
    if (clearOnFocus){
        ctrl.value = "";
    }
    ctrl.focus();
}

你可以像这样实现它:

<asp:TextBox Id="txtPassword" runat="server" TextMode="Password" onfocus="applyFocus(this, true);" ...>

答案 2 :(得分:0)

通过我的文本框的id调用它,由asp.net生成。

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

我不知道这是一个“好的实践”直接调用id,但我无法让对方工作。