2010-07-27 7 views
6

Si j'utilise à la fois onclick() et onClientClick(), puis-je m'assurer que le côté serveur ne sera appelé qu'après que la fonction côté client a renvoyé TRUE ou vice versa?Différence entre onclick() et onClientClick()?

Par exemple:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<%@ Import Namespace="System.Xml" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<% 
protected void save_n_display(object sender, EventArgs e) 
{ 
    // This must be called when validate() returns true... 
} 
%> 

<asp:Button ID="Button1" OnClientClick="validate()" onClick="save_n _display" "Text="Check" runat="server" /> 


<script type="text/javascript" language="javascript"> 
    function validate() // client side Validation is done 
    { 

    } 
</script> 

Alors puis-je utiliser onclick() et onClientClick() ou dois-je quelque chose de différent pour cela? J'ai même essayé de passer des variables de javascript à des fonctions asp, alors quand validate retourne true, save_n _display sera appelé.

Répondre

4

Cependant, vous obtenez l'événement de clic côté client enregistré, peu importe. Bien que si vous utilisez un contrôle serveur, vous voulez utiliser onclientclick. Mais la clé est que vous voulez utiliser return Validate(). Ensuite, dans votre méthode de validation, vous renvoyez une valeur vraie ou fausse selon qu'elle a été validée ou non.

EDIT: Alors faites OnClientClick ressembler à ceci:

onclientclick="return Validate();" 

Puis dans la fonction validate:

function Validate() 
{ 
    return true; 
} 
+0

donc si validate retourne false ... onClick ownt être appelé ou wat ?? –

+0

@Sangram c'est correct, si Validate() renvoie false, l'événement click sera annulé – Jiaaro

0

Je dois trouver l'exemple ... mais je viens de faire le ON- cliquez sur l'événement. Dans le codebehind, j'ai couru mon code ServerSide ... ou je voudrais enregistrer un script sur la page pour appeler la validation JS et ensuite exécuter le code codebehind.

Learn about RegisterStartupScript

OnClick="MyCodeBehindMethod()" 

Ensuite, dans le codebehind ont:

//Verify and validate conditions 
    string script1="<script language=JavaScript>" 
    script1 += "Validate();" 
    script1 += "</script>" 
    Page.RegisterStartupScript("clientscript",script1);