【问题标题】:how do i call javascript function at the end of button click in asp.net我如何在 asp.net 中的按钮单击末尾调用 javascript 函数
【发布时间】:2012-07-24 18:34:06
【问题描述】:

我试过了

Protected Sub btn_add_question_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_add_question.Click
        frm_course.Visible = False
        question_div.Visible = True
        ScriptManager.RegisterClientScriptBlock(btn_add_question, Me.GetType(), "BlockName", "alert('hello world');", True)
    End Sub

Protected Sub btn_add_question_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_add_question.Click
        frm_course.Visible = False
        question_div.Visible = True
        Page.ClientScript.RegisterStartupScript(Me.GetType, "Javascript", "alert('hello')")
    End Sub

但是,警报消息没有显示。需要帮助!!

 <asp:Button ID="btn_add_question" runat="server" Text="Next" CssClass="btn_submit" Width="101px" />

【问题讨论】:

  • 在结果页面上使用查看源代码并搜索alert -- 看起来如何?
  • 另外,请发布按钮的asp代码,这也可能有错误。
  • 没有找到任何alert
  • 请检查,我已经更新了我帖子中的按钮代码
  • 如果您在源代码中没有看到警报,则此按钮不会被呈现。你确定这个控件不在另一个被“隐藏”的控件中

标签: javascript asp.net vb.net


【解决方案1】:

您需要通过将True 作为最后一个参数传递给RegisterStartupScript,将&lt;script&gt; 标记添加到函数调用中:

Page.ClientScript.RegisterStartupScript(Me.GetType, "Javascript", "alert('hello');",True)

更新

试试这个:

ScriptManager.RegisterStartupScript(Me.GetType, "Javascript", "alert('hello');",True)

【讨论】:

  • 没有帮助,和之前一样。
  • 我注意到一件事,当我评论 frm_course.Visible = False 然后它显示警告框,现在我不知道为什么,请任何人解释
  • @coders 这没有意义。应该还有其他事情发生。您是否在页面中使用任何类型的 UpdatePanel/ScriptManager?我相信我的 2 个选项中的任何一个都可以在带有 updatepagel/scriptmanager 的页面和没有它们的页面上工作。
  • 是的,我接受,您的解决方案有效,但只有当我将frm_course.Visible = False 行放在评论中时。这就是为什么,我很困惑,为什么会这样。
  • 我感觉frm_course 是您的主要表单,RegisterStartupScript 正在此表单中添加脚本。因为它是不可见的,所以没有渲染任何东西,你的脚本也没有触发。
【解决方案2】:

OnClientClick 处理程序添加到按钮,或者更好的是,通过javascript 将处理程序附加到应该在的位置。

<asp:button id="myButton" runat="server" text="Postback" onclientclick="alert('hello world');" />

如果您所做的只是更改某些元素的某些可见性,那么您甚至根本不应该回帖。只需使用 input type="button" 并通过 javascript 显示/隐藏。

<input type="button" value="Next" id="btn_add_question" />

document.getElementById('btn_add_question').onclick = function () {
    document.getElementById('frm_course').style.visibility = 'hidden';
    document.getElementById('question_div').style.visibility = 'visible';
    alert('hello world');
};

【讨论】:

  • 这是 vb Handles btn_add_question.Click 在服务器端执行此操作,您在谈论 javascript
  • @Hogan 你做了一个毫无意义的回发来做你可以在 javascript 中做的事情,从代码和延迟的角度来看这对性能很不利。
  • 你说的可能是真的。但是,这仍然是海报问题。因此投反对票。有很多次我不得不从后面的代码向页面发布警报,这是无法以任何其他方式完成的。
  • @Hogan 我发布的答案与 OP 试图完成的功能完全相同,无需回发。这怎么是坏事?
  • 想象一下,有很多案例(这里没有简化发布)需要他展示的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-02
  • 1970-01-01
相关资源
最近更新 更多