【问题标题】:How to call javascript function after button click event ASP如何在按钮单击事件 ASP 后调用 javascript 函数
【发布时间】:2018-10-25 13:05:40
【问题描述】:

我正在尝试制作一个从数据库中删除某些内容的按钮,但在此之前我想运行验证请求的 javascript(“您确定要删除吗?”)并且在按钮单击后我想要删除已删除的 DIV。 我在让后者工作时遇到问题,似乎无法修复它。我将提供一些代码示例:

编辑

撤回的代码。担心我的项目被不当抄袭。

对于搜索相同问题的人来说,答案仍然有效。感谢您的回复!

【问题讨论】:

  • 就我个人而言,我不会尝试通过 javascript 来执行此操作。您已经回发到服务器。为什么不在执行删除服务器端后生成 cmets 列表?猜测您的代码,如果不是回发,则仅在页面加载时调用 ShowMeeting,然后在您执行删除之后在您的删除事件处理程序中调用它
  • 如果您坚持使用 javascript 路径,请在脚本中添加一些调试代码。在deleteCommentDivdeleteCommentDiv 的开头添加console.log("Deleting Comment") 以查看是否正在调用您的方法,并在您尝试找到div 后添加console.log(div) 以检查它是否已找到。然后在您的页面在删除后刷新后,您将更好地了解正在发生的事情。这一切很有可能在 DOM 完全加载之前发生。

标签: javascript c# asp.net events


【解决方案1】:

要从后面的代码调用 Javascript 或 jQuery,我在 asp:Content 标记下方的 ASPX 上添加了一个 Ajax 的 ScriptManager 控件(来自工具栏):

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

在后面的代码中:

System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "myFunction", "alert('This is a test');", true);

导致回发或“调用”Javascript 的按钮应该在UpdatePanel 内:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
  <ContentTemplate>
    <asp:Button ID="btnDelComment" runat="server" Text="Delete comment" />
</ContentTemplate>
  <Triggers>
    <asp:PostBackTrigger ControlID="btnDelComment" />            
  </Triggers>
</asp:UpdatePanel>

更新:

由于您的控件是动态添加的,请将MeetingContent div 放在&lt;ContentTemplate&gt; 标记内,并且必须删除PostBackTrigger,因为加载页面时btnDelComment 尚不存在:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>
        <div id="MeetingContent" runat="server">
        </div>
      </ContentTemplate>
</asp:UpdatePanel>

我也删除了UpdateMode="Conditional"

【讨论】:

  • 我是新手,所以我只想问一下,这是否意味着我必须在 aspx.cs 文件中创建视图?我的意思是我的动态视图(包括按钮)的大部分代码现在都在一个单独的类中,它只返回一个 HtmlGenericControl 到 aspx.cs 文件。当我在生成视图的类中说“this”时,我只是指该类的实例,而不是“Page”类
  • 您的自定义控件的类在&lt;div id="MeetingContent"&gt; ... &lt;/div&gt; 中呈现,对吗?如果是这样,只需将该 div 放在 UpdatePanel 的 &lt;ContentTemplate&gt; 标记内。我提供的代码必须放在aspx文件中。
  • ^哎呀哎呀编辑。我现在受您的启发尝试了两种解决方案。我使用按钮动态创建更新面板(每个按钮都有唯一的控件 ID),现在我尝试使用外部更新面板的解决方案,但我认为我面临的问题是我无法在我的 ScriptManager 中访问 Page 类的正确实例.RegisterClientScriptBlock(Page, Page.GetType(), string, string, bool);
  • 你试过System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), string, string, true);吗?只是看看它是否有什么不同。
  • 好的,那么这可能会有所帮助:stackoverflow.com/questions/6779911/…
【解决方案2】:

您可以在您的按钮中找到 OnClientClick 事件并添加以下内容:

OnClientClick="return confirm('Are you sure you want to delete');"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 2010-10-07
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    相关资源
    最近更新 更多