如何在 ASP.NET 中在按钮点击事件调用之前和之后调用 JavaScript 函数

8
我已经在ASP.NET中创建了“ButtonClick”函数,代码如下:

<asp:Button ID="btnLogin" runat="server" Text="Login" CssClass="button" CausesValidation="true" onclick="btnLogin_Click"/>

我想知道,在调用ASP.NET按钮点击功能之前和之后是否有可能调用JavaScript函数...???
谢谢。

我想在调用ASP.NET函数之前显示一个div。 - sohaib
1
@Amir: 有时候有人没有时间进行研究,必须在很短的时间内提交任务。所以请不要打击某人下次提问。请保持健康的环境。谢谢。 - Murtaza Munshi
6个回答

15

可以的,这里有一个快速示例: 调用Java脚本函数。

<script type="text/javascript">
    function clientValidate() {
        alert("execute before");
        return true;
    }

    function executeAfter() {
        alert("execute after");
    }
</script>

这是按钮的快照

<asp:Button ID="btnLogin" runat="server" Text="Login" CausesValidation="true" OnClientClick="clientValidate()" onclick="btnLogin_Click"/>

注意属性 onClientClick="clientValidate()",它将在按钮在服务器端被单击之前触发脚本。

在服务器端:

protected void btnLogin_Click(object sender, EventArgs e)
        {
        ScriptManager.RegisterClientScriptBlock(this, GetType(), "none", "<script>executeAfter();</script>", false);
        }

注意执行executeAfter();,它会在服务器事件后触发Javascript执行。

别忘了在你的aspx文件中放置<asp:ScriptManager runat="server"></asp:ScriptManager>

希望能帮到你。


4

将此代码放入您的页面,并确保您有一个ScriptManager。这些代码将处理您的前后回发。

var prm, postBackElement;
if (typeof Sys != "undefined") {
    prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);
}

function InitializeRequest(sender, e) {
    postBackElement = e.get_postBackElement();
    if (postBackElement.id == "btnLogin") {
        // before click codes
    }
}
function EndRequest(sender, e) {
    if (postBackElement.id == "btnLogin") {
        // after click codes
    }
}

3

之前:

<script type="text/javascript">
    function executeBefore() {
        alert("execute before");   
    }
</script>

<asp:Button ID="btnLogin" runat="server" Text="Login" CausesValidation="true" OnClientClick="executeBefore()" onclick="btnLogin_Click"/>

之后:

<script type="text/javascript">
    function executeAfter() {
        alert("execute after ");    
    }
</script>

请将以下代码添加到您的服务器端事件中:

Page.ClientScript.RegisterStartupScript(GetType(), "none", "<script>executeAfter();</script>", false);

如果您没有母版页,或者不使用ajax,则无需添加ScriptManager。

2
您可以使用OnClientClick()在服务器端单击之前调用Java scrip函数:

aspx(设计)

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function Test() {
            alert('client click');
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button Text="btn" runat="server" ID="btn" 
                        OnClick="btn_Click" OnClientClick="Test()" />
    </div>
    </form>
</body>
</html>

.cs

 protected void btn_Click(object sender, EventArgs e)
 {
    Response.Write("Server Click");
 }

1
第一次,您可以在按钮的OnClientClick事件中调用您的JavaScript函数并传递函数名称。
<asp:Button ID="btnLogin" runat="server" Text="Login" CssClass="button" CausesValidation="true" onclick="btnLogin_Click" OnClientClick="return functionNAME();"/>

第二次,在您的按钮单击事件btnLogin_Click中调用以下js:
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "script", "<script type='text/javascript'>functionNA();</script>", false);

0

在调用之前,你可以考虑使用 onload 函数,就像这个例子:

<body onload="myFunction()">

为了之后调用它,只需将按钮链接到执行JS的onClick事件吗?

我不太明白你的意图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接