我有一个用户可以输入注释的文本框,然后单击“保存”。当他们单击“保存”时,某些代码会在后台执行,但是他们的注释会保留在文本框中,以便他们可以看到它们。我想在单击“保存”时显示“已保存注释”框的上方显示一些文本,以便他们知道他们的请求已完成,因为单击“保存”后页面上没有任何其他更改。但是,他们可以更改文本框中的文本,除非再次单击“保存”,否则不会保存。所以,如果他们更改框中的文本,我希望“已保存注释”文本消失。但是,我无法设置AutoPostBack="true"
,因为它会弄乱页面上发生的其他一些事情。有没有办法让文本框更改时“注释已保存”文本消失,而无需重新加载页面?这是我到目前为止的代码:
<div id="savedMsg" runat="server"><p class="msgAlert"> Comments Saved! </p></div>
<div>
<asp:Panel runat="server" DefaultButton="Save">
<asp:TextBox runat="server" ID="TextBox" CssClass="form-control" TextMode="MultiLine"/>
</asp:Panel>
</div>
这是背后的代码:
protected void SaveComments(object sender, EventArgs e)
{
//some code here that is unrelated
savedMsg.Visible = true;
}
理想情况下,我会设置TextChange="SomeMethod"
并将其包含在我的代码中:
protected void SomeMethod(object sender, EventArgs e)
{
savedMsg.Visible = false;
}
但我无法启用AutoPostBack,因此此事件永远不会发生。
答案 0 :(得分:1)
您可以在TextBox的onkeydown
事件中隐藏消息:
<asp:TextBox runat="server" ID="TextBox" onkeydown="hideSaveMessage();" CssClass="form-control" TextMode="MultiLine" />
使用Javascript代码:
<script type="text/javascript">
function hideSaveMessage() {
var div = document.getElementById('<%= savedMsg.ClientID %>');
div.style.visibility = 'hidden';
}
</script>
您也可以使用div.style.display = 'none'
隐藏消息,但这会导致TextBox“跳转”到新位置,这有点令人不安。
我使用document.getElementById('<%= savedMsg.ClientID %>')
来说明ASP.NET对div ID应用的任何修改。更简单的语法document.getElementById('savedMsg')
可能适用于您的情况。