繁体   English   中英

JavaScript确认对话框-ASP.NET

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM