1

我正在用 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>

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

4

3 回答 3

0

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

protected void Page_Load(object sender, EventArgs e)
{
    if (TextBox.Text.Trim().Length > 0)
    {
      TextBox.Text = String.Empty;
    }
}
于 2011-10-17T13:38:42.130 回答
0

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

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

你可以像这样实现它:

<asp:TextBox Id="txtPassword" runat="server" TextMode="Password" onfocus="applyFocus(this, true);" ...>
于 2011-10-17T16:26:32.330 回答
0

Worked it out by calling it by the id of my textbox, generated by asp.net.

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

I dont know if this is a "good pratice" to call the id directly, but i could not get the other to work.

于 2011-10-18T11:37:51.280 回答