按钮onclick中的JavaScript不起作用

本文关键字:不起作用 JavaScript 中的 onclick 按钮 | 更新日期: 2023-09-27 18:25:10

我有一个网页(ASP.NET C#),它有一个按钮:

<asp:Button ID="btnHide" runat="server" OnClick="HidePanel" Text="Hide"/>

我正在做一个JavaScript警报,比如:

public void HidePanel(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(),"Hello","<script type=text/javascript> alert('Hello') </script>");
}

如果我将函数修改为没有object senderEventArgs e,那么我可以从Page_Load调用它,它工作正常,我会收到警报。

如上所述,当我点击按钮时,我希望看到警报,但它没有发生。我确信这是显而易见的,但我看不出来。

按钮onclick中的JavaScript不起作用

使用OnClientClick而不是OnClick。并添加return false以避免在页面上回发。

<asp:Button ID="btnHide" runat="server" OnClientClick="alert('Hello'); return false;" Text="Hide"/>

您可以尝试使用,ClientScript.RegisterClientScriptBlock(GetType(),"nameOfScript",scriptString);

我以前在点击事件中使用过它。

编辑:我还不能编辑帖子,但你的代码对我来说也很好。

根据情况,他可能还想在点击事件上做一些服务器端的事情,或者动态构建脚本。

编辑:如果你已经注册了一个同名的脚本,它将不会运行,例如

Page.ClientScript.RegisterStartupScript(this.GetType(), "Hello", "<script type=text/javascript> var i = 0;</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), "Hello", "<script type=text/javascript> alert('other hello') </script>");

您可以删除代码来注册JavaScript代码,然后执行以下操作:

<asp:Button ID="btnHide" runat="server" 
   OnClick="HidePanel" Text="Hide" OnClientClick="alert('Hello');" 
   UseSubmitBehavior="false" />      

此:

UseSubmitBehavior="false" 

将导致按钮启动客户端脚本,并运行服务器端代码(post-back)。