按钮onclick中的JavaScript无法正常工作

时间:2012-02-20 20:10:48

标签: c# asp.net

我有一个网页(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调用它,它可以正常工作,我收到警报。

如上所述,我希望在点击按钮时看到警报,但它没有发生。我确定这是明显的,但我没有看到它。

3 个答案:

答案 0 :(得分:3)

使用OnClientClick代替OnClick。并添加return false以避免页面上的回发。

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

答案 1 :(得分:2)

你可以尝试使用,     ClientScript.RegisterClientScriptBlock(GetType(),“nameOfScript”,scriptString);

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

编辑: 我还无法编辑帖子,但您的代码也适用于我。

根据具体情况,他可能希望在click事件上做一些服务器端的事情,或者动态地构建脚本。

编辑: 如果您已经注册了具有相同名称的脚本,则它将无法运行,例如。

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>");

答案 2 :(得分:1)

您可以删除代码以注册JavaScript代码,而不是执行此操作:

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

此:

UseSubmitBehavior="false" 

将导致该按钮触发客户端脚本,它将运行服务器端代码(post-back)。