[英]Javascript confirmation dialog - ASP.NET
我在同一主题上看到了几个类似的问题,但都没有解决我的问题。
我有一个asp.net网站,并希望在数据库更新后向用户显示状态消息(asp:label将在5秒钟内消失)。
我想将文本分配给标签,然后用Javascript隐藏它。
我整理了js部分,唯一的问题是将文本分配给控件后如何调用js函数?
假设我正在使用以下代码更新数据库中的内容:
<asp:Button ID="btnUploadFiles" runat="server" OnClick="buttonSubmit_Click" Text="Update" />
后面的代码
protected void buttonSubmit_Click(object sender, EventArgs e)
{ try{// update the database
// change label text to tell the user update succeeded}
catch(Exception ex){...}
}
请帮忙!
更新:请没有jQuery,只是普通的javascript
我个人使用jQuery ,但是如果您想使用普通的旧JavaScript,那么类似的方法可能会解决问题:
<script type="text/javascript">
function hideLabel()
{
// replace yourLabelID with <%=YourLabelID.ClientID%> if it's a .NET Label control
document.getElementById('yourLabelID').style.display = 'none';
}
setTimeout('hideLabel()', 5000);
</script>
如有必要,您还可以将脚本块嵌入到Literal
控件中,并仅在更新标签文本时使其可见。
回答您的问题“将文本分配给控件后,如何调用js函数?”。 您可以在按钮单击事件内部添加对“ RegisterClientScriptBlock”的调用,以输出Luke提供的JavaScript。
protected void buttonSubmit_Click(object sender, EventArgs e)
{
try
{
// update the database
// change label text to tell the user update succeeded
label.Text = "Message";
string js = "function hideLabel(){document.getElementById('" + label.ClientID + "').style.display = 'none'};setTimeout(hideLabel, 5000);"
ClientScript.RegisterClientScriptBlock(this.GetType(), "test", js ,true);
}
catch(Exception ex){...}
}
您是通过Ajax回发还是通过普通回发? 如果是正常的回发,只需在页面上注册一些JavaScript即可设置计时器,并调用计时器到期后隐藏标签的函数。 下面的示例使用jQuery确保在启动计时器之前已加载DOM,但是还有其他方法。 经过5秒后,它将隐藏标签。
function hideLabel(label)
{
$(label).hide();
}
$(document).ready( function() {
var label = $('#labelID');
setTimer(function() { hideLabel(label); ),5000);
});
如果您使用的是AJAX,则基本思路是相同的,只是您在onSuccess回调中为AJAX调用而不是在文档加载时设置了计时器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.