我应该使用“onclick”或“ontextchanged”事件为我的文本框隐藏标签

时间:2013-01-24 13:32:52

标签: c# asp.net onclick textchanged

我正在使用asp.net c#,我希望实现的是当用户在表单上的文本框中单击以隐藏标签时(我使用此标签进行反馈)。

我正在尝试类似下面的代码,但标签永远不会隐藏:

hiddenMsg.Visible = true;
.
.
.

private void compTxt_TextChanged(object sender, EventArgs e)
{
    if (!IsPostBack)
        {
            hiddenMsg.Visible = false;
        }
}

在我的aspx文件中,我有以下内容:

<asp:TextBox ID="compTxt" runat="server" TabIndex='11' AutoPostBack="true" ontextchanged="compTxt_TextChanged" ></asp:TextBox>

[更新了我的问题]

我正在使用Javascript来实现我的目标,而且我在JS中使用style.display属性而不是Visible = false以实现这一点,但是我不确定我在asp中使用的方法:TextBox,Can任何人都帮助我如何从asp:TextBox调用JavaScript方法?

function hideMsgs() {
      document.getElementById('<%= hiddenMsg.ClientID %>').style.display = 'none';
}  

<asp:Label ID="hiddenMsg" runat="server" Text="Successfully Saved" style="display:inherit;"/>


<asp:TextBox ID="compTxt" runat="server" TabIndex='11' OnClientClick="hideMsgs()"/>

2 个答案:

答案 0 :(得分:2)

摆脱IsPostBack检查,它将永远是一个回发。

private void compTxt_TextChanged(object sender, EventArgs e)
{
    hiddenMsg.Visible = false;
}

对于客户端解决方案,请在页面加载中

protected void Page_Load(object sender, EventArgs e)
{
    compTxt.Attributes.Add("onclick", "document.getElementById('hiddenMsg').style.display = 'none';");
}

如果您在项目中使用母版页,请在页面加载中使用此行:

compTxt.Attributes.Add("onclick", "document.getElementById('" + hiddenMsg.ClientID + "').style.display = 'none';");

答案 1 :(得分:0)

点击客户端不会导致回发。您需要回发来处理该代码。我建议使用javascript来处理您的点击事件,以便您可以隐藏您的标签客户端。然后不需要回发。

相关问题