0

这是一个回发问题(我不想使用客户端来解决这个问题,必须有一种方法来防止回发然后使用客户端),我有一个按钮,点击它会调用一个javascript函数后面的代码,但在此之前它回发页面,问题是:我如何跳过回发步骤并跳转到 javascript 部分?

<script type="text/javascript">
    function hello(name) {
        alert("hello world from javascript " + name)
        return false;
    }
</script>
 </head>
 <body>
<form id="form1" runat="server">
<div>
    <asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>

后面的代码:

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim Myname As String = "myName"
    Dim cstype As Type = Me.GetType()
    Page.ClientScript.RegisterStartupScript(cstype, "MyKey", "hello('" & Myname & "');", True)

End Sub
4

4 回答 4

3

使用客户端处理程序而不是服务器端处理程序。删除Button1_Click并添加您的 js 调用作为OnClientClick属性值。

<asp:Button ID="Button1" runat="server" Text="Button" 
            OnClientClick="return hello('myName');" />

或者,根本不使用服务器控件:

<button id="button1" onclick="return hello('myName');">Button</button>
于 2012-06-15T14:30:27.330 回答
1

为什么不使用 HTML 按钮而不是 ASP 按钮

<input id="Button1" type="button" value="button" runat="server" />

和服务器端写类似

Button1.Attributes.Add("onclick","hello()");
于 2012-06-15T14:25:20.307 回答
1

我认为您正在寻找使用OnClientClick按钮的事件:

<asp:Button ID="Button1" OnClientClick="return hello('world')" runat="server" Text="Button" />
于 2012-06-15T14:33:34.653 回答
1
  1. 您应该在按钮单击事件之前在 page_load 或方法中注册此脚本。

    Button1.Attributes.Add("onclick","re​​turn hello()");

  2. 在调用 hello 方法之前使用 return 在后面的代码中注册脚本,如下所示

    Page.ClientScript.RegisterStartupScript(cstype, "MyKey", "return hello('" & Myname & "');", True)

  3. 如果您不想回发,请从 Button1_Click 中删除所有语句。或者解绑服务端点击事件

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) 处理 Button1.Click

结束子

于 2012-06-15T14:20:11.347 回答