web-dev-qa-db-fra.com

Comment appeler une fonction javascript avant et après un événement avec un clic de bouton sur asp.net

j'ai créé la fonction "ButtonClick" dans ASP.NET comme suit:

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

je veux savoir, est-il possible d'appeler une fonction javascript avant et après l'appel de la fonction de clic sur le bouton asp.net ... ???

Merci.

5
sohaib

Oui c'est possible, voici un exemple rapide: Fonction de script Java à appeler.

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

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

Voici snapshoot pour le bouton

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

Remarquez la propriété onClientClick = "clientValidate ()", ce sera un script de déclenchement avant que le bouton ne soit cliqué sur le serveur.

Du côté du serveur:

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

Avis executeAfter () ;, il déclenchera l'exécution de javascript après l'événement du serveur. 

N'oubliez pas de placer <asp:ScriptManager runat="server"></asp:ScriptManager> dans votre fichier aspx.

J'espère que ça aide

13
Akbar Kautsar

mettez ceci sur votre page et assurez-vous d'avoir un scriptmanager. ces codes traiteront vos post-publications pré et post.

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
    }
}
4
avhinn robles

Vous pouvez appeler une fonction Java scrip avant que le serveur ne clique avec OnClientClick():

aspx (design)

<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");
 }
2
Arshad

Avant:

<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"/>

Après: 

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

Ajoutez ce code à votre événement côté serveur:

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

Si vous n'avez pas de page maître ou n'utilisez pas ajax, il n'est pas nécessaire d'ajouter ScriptManager.

2
live-love

Pour la première fois, vous pouvez appeler votre fonction javascript dans l'événement OnClientClick de Button en passant votre nom de fonction.

<asp:Button ID="btnLogin" runat="server" Text="Login" CssClass="button" CausesValidation="true" onclick="btnLogin_Click" OnClientClick="return functionNAME();"/>

Deuxième fois, dans votre bouton, cliquez sur l'événement btnLogin_Click appelez js comme suit

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "script", "<script type='text/javascript'>functionNA();</script>", false);
1
joker

Pour l'appeler auparavant, vous pouvez envisager d'utiliser la fonction onload, comme dans l'exemple suivant:

<body onload="myFunction()">

Pour l'appeler ensuite, il suffit de lier le bouton pour exécuter JS onClick?

Je ne pense pas avoir bien compris vos intentions.

0
ChoiceMC