2010-07-27 85 views
6

Si utilizo ambos onclick() y onClientClick() ¿puedo asegurarme de que se invocará al lado del servidor solo después de que la función del lado del cliente devuelva TRUE o viceversa?Diferencia entre onclick() y onClientClick()?

Por ejemplo:

<%@ 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> 

Así que puedo utilizar onclick() y onClientClick() o necesito algo diferente para esto? Incluso traté de pasar variables de javascript a funciones asp para que cuando valide devuelva verdadero, se llamará a save_n _display.

Respuesta

4

Sin embargo, si recibe el evento de clic del lado del cliente registrado no importa. Sin embargo, si está utilizando un control de servidor, entonces sí desea usar elclickclick. Pero la clave es que desea usar return Validate(). Luego, en su método de validación, devuelve un valor verdadero o falso dependiendo de si se validó o no.

EDIT: así que OnClientClick tener este aspecto:

onclientclick="return Validate();" 

Luego, en la función de validación:

function Validate() 
{ 
    return true; 
} 
+0

así que si validar devuelve falso ... onClick ownt ser llamados o wat ?? –

+0

@Sangram que es correcto, si Validate() devuelve falso, se cancelará el evento click – Jiaaro

0

tengo que ir a buscar el ejemplo ... pero acabo de hacer las masas del balance haga clic en evento. En el código subyacente, ejecuté mi código ServerSide ... o registraría un script en la página para llamar a la validación de JS y luego ejecutar el código subyacente.

Learn about RegisterStartupScript

OnClick="MyCodeBehindMethod()" 

Luego, en el código subyacente tienen:

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